【发布时间】:2018-05-13 12:44:36
【问题描述】:
class Part
{
public:
~Part() = delete;
};
class CL
{
public:
CL(){} //error: deleted destructor call
~CL();
Part part;
};
int main()
{
}
此代码给出了与Part 的已删除析构函数调用相关的错误。成员析构函数调用的默认构造函数的上下文是什么?
P.S:据我所知,Part 成员的析构函数必须在 ~CL() 中调用,但它不是专门为演示而定义的,默认构造函数强制它在任何地方
【问题讨论】:
-
“成员析构函数调用的默认构造函数中的上下文是什么?c++ 构造函数析构函数删除操作符”
Part part;当然。而且它并不是真正的默认构造函数的上下文。 -
为什么
Part::~Part()被删除了? -
如果我评论“CL(){}”,代码编译得很好。显然,默认 ctor 中就是这种情况
-
"显然,默认 ctor 就是这种情况"不,不是,它是从
~CL()调用的 -
这是否与构造函数必须销毁已初始化的成员以防异常有关?
标签: c++ constructor language-lawyer destructor