【发布时间】:2012-01-12 02:57:04
【问题描述】:
鉴于下面的代码,为什么我会收到关于 A 的析构函数是私有的错误?明明是私有的,但是我不明白为什么用这种方式初始化B的A对象实例会导致A的析构函数被调用。
对于任何拼写错误,我深表歉意,我正在从非网络系统的内存中重新创建代码,并且没有编译器。
class A
{
public:
A(int val) : x(val) {}
private:
int x;
~A() {}
};
class B
{
public:
B() : aInstance() {}
private:
A aInstance;
};
int main()
{
B b;
}
【问题讨论】:
-
不能对基于堆栈的对象执行此操作(即使是间接的)。这里对私有析构函数的使用和限制进行了很好的讨论:stackoverflow.com/questions/631783/…
标签: c++