C++ 附加析构函数调用的原因?
给出了以下简单类:C++ 附加析构函数调用的原因?,c++,destructor,C++,Destructor,给出了以下简单类: #包括 福班{ INTA,b; 公众: Foo(int_a=0,int_b=0):a(_a),b(_b){ 标准::cout 我错过了什么 销毁T2 调用了3+2构造函数,也必须调用3+2析构函数 我错过了什么 销毁T2 调用了3+2构造函数,也必须调用3+2析构函数!如果在输出消息中包含this的值,将有助于调试/理解。然后,您将看到在哪个对象实例上调用了哪些操作临时T2也需要析构函数。即(6)。我计算了5个构造函数和5个析构函数。(在我的机器上,使用-O3,我有4个和4个
#包括
福班{
INTA,b;
公众:
Foo(int_a=0,int_b=0):a(_a),b(_b){
标准::cout
我错过了什么
销毁T2
调用了3+2构造函数,也必须调用3+2析构函数
我错过了什么
销毁T2
调用了3+2构造函数,也必须调用3+2析构函数!如果在输出消息中包含this
的值,将有助于调试/理解。然后,您将看到在哪个对象实例上调用了哪些操作临时T2
也需要析构函数。即(6)。我计算了5个构造函数和5个析构函数。(在我的机器上,使用-O3
,我有4个和4个。)我不知道为什么会有一个“附加”析构函数调用。我已经做了一个,用ID标记对象,因此很明显正在构造/析构函数,而且更清楚:有趣的是,gcc 11只生成4个对象(都是析构函数)-看一看:如果在输出消息中包含this
的值,这将有助于您的调试/理解。然后您将看到在哪个对象实例上调用了哪些操作临时T2
也需要析构函数。即(6)。我计算了5个构造函数和5个析构函数。(在我的机器上,使用-O3
,我有4个和4个。)我不确定你为什么认为有一个“附加”析构函数调用。我做了一个用ID标记对象的调用,因此很明显正在构造/析构函数,而且更清楚:有趣的是,gcc 11只生成4个对象(都是析构函数)-看看:该死,我不敢相信我错过了这个。谢谢!不客气!:)该死,我不敢相信我错过了这个。谢谢!不客气!:)
Foo(int, int)
Foo(int, int)
Foo(int, int)
-----------
foo.operator+(const Foo&) // (1)
Foo(int, int) // (2)
Foo(const Foo&) // (3)
~Foo() // (4)
operator=(const Foo&) // (5)
~Foo() // (6)
-----------
~Foo()
~Foo()
~Foo()