当我创建一个std :: vector对象时,并不总是调用这些对象的构造函数.
#include <iostream>
#include <vector>
using namespace std;
struct C {
int id;
static int n;
C() { id = n++; } // not called
// C() { id = 3; } // ok, called
};
int C::n = 0;
int main()
{
vector<C> vc;
vc.resize(10);
cout << "C::n = " << C::n << endl;
for(int i = 0; i < vc.size(); ++i)
cout << i << ": " << vc[i].id << endl;
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
C::n = 1 …Run Code Online (Sandbox Code Playgroud) 我希望能够计算属于同一类层次结构的类的实例.
例如,假设我有这个:
class A;
class B: public A;
class C: public B;
Run Code Online (Sandbox Code Playgroud)
然后我有这个代码
A* tempA = new A;
B* tempB = new B;
C* tempC = new C;
C* tempC2 = new C;
printf(tempA->GetInstancesCount());
printf(tempB->GetInstancesCount());
printf(tempC->GetInstancesCount());
Run Code Online (Sandbox Code Playgroud)
结果应该打印
1
1
2
理想情况下,计数应该在内部进行.每个类,而不是某种经理,应该知道它有多少个实例.
有任何想法吗?
谢谢!