Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 附加析构函数调用的原因?_C++_Destructor - Fatal编程技术网

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()