C++ 为什么是C++;继承时的析构函数调用了2次
我尝试了以下代码:C++ 为什么是C++;继承时的析构函数调用了2次,c++,constructor,destructor,C++,Constructor,Destructor,我尝试了以下代码: #include <iostream> using namespace std; class A { public: A(){cout<<"A();";} ~A(){cout<<"~A();";} }; class B : public A { public: B(){cout<<"B();";} ~B(){cout<<"~B();";} }; int main() { A a =B(); return 0
#include <iostream>
using namespace std;
class A {
public:
A(){cout<<"A();";}
~A(){cout<<"~A();";}
};
class B : public A {
public:
B(){cout<<"B();";}
~B(){cout<<"~B();";}
};
int main() {
A a =B();
return 0;
}
#包括
使用名称空间std;
甲级{
公众:
A(){cout创建临时对象后,第一次销毁将开始。临时对象(B();
)将被销毁-首先是~B()
,然后是其父类~A()的析构函数
被调用。然后a
超出范围,其析构函数被激发。创建临时对象后,该对象将被复制到a
(使用!)中,第一次销毁开始。临时对象(B();
)将被销毁-首先是~B()
,然后是其父类的析构函数~a()调用
。然后
a超出范围,其析构函数触发。您有复制构造函数和切片…您有复制构造函数和切片。。。