0
我正在学习C++,并且是StackOverflow的新增功能。对于测试代码,我正在观察与我期望的相关的额外析构函数调用。以下是我的预期输出后跟实际输出的代码。C++中构造函数,复制构造函数,析构函数序列中的额外析构函数
代码:
#include <iostream>
class c_Test {
public:
c_Test() { std::cout << "Constructor" << std::endl; }
c_Test(const c_Test& x_in) { std::cout << "Copy constructor" << std::endl; }
c_Test operator= (const c_Test&) { std::cout << "operator =" << std::endl; }
~c_Test() { std::cout << "Destructor" << std::endl; }
};
int main()
{
c_Test t0, t1; // call constructor, constructor
c_Test t2 = t0; // call copy constructor
t0 = t1; // call operator=
return 0; // should call destructor, destructor, destructor
}
我预期的输出是:
Constructor
Constructor
Copy constructor
operator =
Destructor
Destructor
Destructor
什么编译并运行该程序后,我得到:
Constructor
Constructor
Copy constructor
operator =
Destructor
Destructor
Destructor
Destructor
我希望每一个析构函数是与构造函数配对,但事实并非如此。为什么会有额外的析构函数?
非常感谢。你的建议奏效了。 – StackUser2015
@ StackUser2015如果这有助于你Wintermute的答案应该被接受。谢谢 –