为什么析构函数被调用两次而构造函数仅被调用一次?

辛格

我的代码是

class CTemp{
public:
    CTemp(){
        printf("\nIn cons");
    }
    ~CTemp(){
        printf("\nIn dest");
    }
};

void Dowork(CTemp obj)
{
    printf("\nDo work");
}

int main()
{
    CTemp * obj = new CTemp();
    Dowork(*obj);
    delete obj;
    return 0;
}

我得到的输出是

In cons
Do work
In dest
In dest

现在为什么构造函数被调用一次而析构函数被调用两次呢?有人可以解释一下吗?

永远
void Dowork(CTemp obj)

此处将完成本地复制,退出DoWork功能范围后将对其进行销毁,这就是为什么您会看到destructor-call的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Enum构造函数在REST类中仅被调用一次?

React:为什么组件的构造函数仅被调用一次?

为什么析构函数被调用两次?

为什么析构函数比构造函数调用得更多?

为什么析构函数调用两次表单?

为什么将异常的析构函数调用两次?

Singleton:析构函数如何被两次调用?

完美的转发,为什么析构函数被调用两次?

C ++ make_shared两次调用析构函数

如何修复两次运行函数但仅被调用一次的Enter键的keypress事件

为什么std :: shared_ptr两次调用我的析构函数?

为什么构造函数被两次调用

为什么代码两次调用析构函数?

为什么该程序中的析构函数被调用两次?

Part的构造函数被两次调用

为什么我的构造函数被两次调用

为什么析构函数被两次调用时我的程序不会崩溃

为什么此函数仅被调用一次

参考计数器和析构函数被调用两次

为什么我的setInterval函数仅被调用一次?

析构函数调用两次

关于两次调用Javascript函数的问题,一次调用一次结果

为什么这个构造函数被调用两次?

为什么使用一次的导入模块函数会被调用两次?

为优化级别为 0 的 std::vector 调用两次析构函数

析构函数使用静态对象调用两次

类和成员析构函数调用两次

为什么类的构造函数被调用了四次,而在程序即将结束的时候,析构函数只被调用了两次?

unique_ptr 两次调用析构函数