我试过这段代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
输出:A(); B();〜B();〜A();〜A();
为什么A的析构函数被调用了2次?