我希望能够计算属于同一类层次结构的类的实例.
例如,假设我有这个:
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
理想情况下,计数应该在内部进行.每个类,而不是某种经理,应该知道它有多少个实例.
有任何想法吗?
谢谢!
提出的解决方案存在一个问题:当您创建B时,您将自动调用构造函数,从而增加A的计数.
class A
{
public:
A(bool doCount = true)
{
if (doCount)
++instanceCount_;
}
static std::size_t GetInstanceCount()
{
return instanceCount_;
}
virtual ~A(){}
private:
static std::size_t instanceCount_;
};
class B: public A
{
public:
B(bool doCount = true):A(false)
{
if (doCount)
++instanceCount_;
}
static std::size_t GetInstanceCount()
{
return instanceCount_;
}
private:
static std::size_t instanceCount_;
};
std::size_t A::instanceCount_ = 0;
std::size_t B::instanceCount_ = 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4306 次 |
| 最近记录: |