我有一个问题,我很确定我知道它的原因。我只是想澄清一下。我有一个包含其他类的类,但为简单起见,我将示例限制为两个类。
A类包含B类。在A类的构造函数中,它通过调用B的构造函数来初始化B类。在 A 类的构造函数结束时,B 类的析构函数被调用,这不是我所期望的行为。这是一个例子......
啊
#include "b.h"
class a {
public:
b classB;
a(int someParam);
};
a.cpp
#include "a.h"
//Class A's constructor
a::a(int someParam) {
//Set class B by calling it's constructor
classB = b(someParam);
//Now class B's destructor gets called when exiting A's constructor...
}
我知道如果你声明一个变量而不使用“new”,它会在离开当前范围时被销毁。但我一直认为这适用于变量的范围,而不适用于您为其赋值的范围。这就是问题所在,对吧?如果是,那么做事classB = *new b(someParam);
就没有错吗?还是我应该只使用指针?