in all my other experiments i have done, my variables go out of scope as intended, but when i put variables in the main method, they don't go out of scope or that's what it seems like because the destructor never gets called:
#include <string>
#include <iostream>
using namespace std;
#define PRINT(s) cout << s
#define PRINTLN(s) PRINT(s) << endl
class Animal
{
public:
string name;
int legs;
Animal(string name, int legs) {
this->name = name;
this->legs = legs;
}
~Animal(){
PRINTLN("deleting");
}
static Animal createAnimal() {
PRINTLN("creating");
return Animal("animal", 4);
}
};
int main() {
PRINTLN("start");
Animal a = Animal::createAnimal();//or Animal a("hello", 5);
PRINTLN("end running method");
PRINTLN("end");
system("pause");
return 0;
//should print out "deleting" here
//because of a going out of scope
}