How to use static data member in a class with dynamic object allocation in C++

1 Answer

0 votes
#include <iostream>

using std::cout;
using std::endl;

#define TOTAL 3

class Animal {
private:
	float age;
public:
	static int sCount;

	Animal(float age) :age(age) { sCount++; }
	virtual ~Animal() { sCount--; }
	virtual int GetAge() { return age; }
};

int Animal::sCount = 0;

int main()
{
	Animal *oArray[TOTAL];

	for (int i = 0; i < TOTAL; i++)
		oArray[i] = new Animal(i + 100);

	for (int i = 0; i < TOTAL; i++)
	{
		cout << "Animal::sCount = " << Animal::sCount << endl;
		cout << "oArray[i]->GetAge() = " << oArray[i]->GetAge() << endl;
		delete oArray[i];
		oArray[i] = NULL;
	}

	return 0;
}


/*
run:

Animal::sCount = 3
oArray[i]->GetAge() = 100
Animal::sCount = 2
oArray[i]->GetAge() = 101
Animal::sCount = 1
oArray[i]->GetAge() = 102

*/

 



answered Mar 12, 2018 by avibootz

Related questions

1 answer 182 views
1 answer 174 views
1 answer 191 views
1 answer 210 views
1 answer 112 views
...