explicit-destructor-call相关内容

显式调用析构函数

我偶然发现了以下代码片段: #include #include 使用命名空间标准;第一课{字符串 *s;民众:First() { s = new string("Text");}~First() { 删除 s;}void Print(){ cout 文字说这个片段应该导致运行时错误.现在,我不太确定,所以我尝试编译并运行它.有效.奇怪的是,尽管所涉及的数据很简单,但程序在打印“文本"后卡顿,仅 ..

为什么不能在析构函数可以的同时显式调用构造函数?

在下面的C ++代码中,允许我显式调用析构函数,但不能显式调用构造函数.这是为什么?不会在dtor案件中明确要求更富有表现力和统一吗? class X {};int main(){X * x =(X *):: operator new(sizeof(X));新的(x)X;//选项#1:确定x-> X();//选项#2:错误x->〜X();:: operator delete(x);} 解决 ..

为什么在std :: move之后需要析构函数调用?

在C ++编程语言第4版中,有一个矢量实现的示例,请参阅消息末尾的相关代码. uninitialized_move()通过将新的T对象从旧存储区中移出,将它们初始化到新的存储区中.然后,它将调用原始T对象(从其移出的对象)上的析构函数.为什么在这种情况下需要进行析构函数调用? 这是我的不完整理解:移动对象意味着将移出的对象拥有的资源的所有权转移到移入的对象.移出对象中的其余部分是某些内 ..

什么时候应该防止隐式破坏?它是如何工作的?

我知道我可以声明一个析构函数 = delete 或 private ,以防止程序隐式删除对象在作用域的末尾。我也知道,如果它是私有的,我可以有一个成员函数,可以显式调用析构函数每当我调用它: void kill(){this->〜A(); } p>为什么我想要防止隐式破坏?请举个例子 = delete 会做什么?它确保析构函数永远不会运行吗?因此,对象将永远存在于其范围之外? 解 ..
发布时间:2016-10-30 17:07:10 C/C++开发