如果我上课:

Class aClass
{
    vector<aClass> connections;
}


如果我要做的话,其他一切都正确声明:

aClass a = new aClass();
aClass b = new aClass();

b.connections.push_back(a);


这会创建对a的引用还是会复制该类。

我希望它是指向该类的指针,但是我不确定是否需要额外的语法来确保这一点。我记得读过,当一个类声明为aClass a = new aClass时,它正在创建一个指向堆中对象的指针,但是我不确定这里会发生什么。

供参考,例如链接列表。

另外,如果有人可以为这个问题想一个更好的标题,请继续进行编辑。

最佳答案

connections应该是vector<aClass*>aClass a应该是aClass* a
然后,对于b.connections.push_back(a);,将复制指针的值,而不是指针对象(即,指向的对象)。
如果您确实想使用诸如std::vector<std::shared_ptr<aClass>>之类的指针,我建议您使用smart pointers而不是原始指针。

10-08 10:48