相关疑难解决方法(0)

如何调用std :: vector中包含的对象的构造函数?

当我创建一个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)

c++ static constructor stl stdvector

11
推荐指数
2
解决办法
7055
查看次数

计算各个派生类的实例

我希望能够计算属于同一类层次结构的类的实例.

例如,假设我有这个:

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

理想情况下,计数应该在内部进行.每个类,而不是某种经理,应该知道它有多少个实例.

有任何想法吗?

谢谢!

c++

4
推荐指数
1
解决办法
4306
查看次数

标签 统计

c++ ×2

constructor ×1

static ×1

stdvector ×1

stl ×1