G++ 编译器错误?

G++ Compiler bug?

本文关键字:错误 编译器 G++      更新时间:2023-10-16

这是我的代码看起来非常简单:

#include <stdio.h>
class Test
{
public:
Test()
{
printf ("contructor !n");
}
~Test()
{
printf ("destructor !n");
}
Test(const Test& test)
{
printf ("copy contructor !n");
}
};

int main()
{
Test xyz(xyz);
return 0;
}

然后我输入 g++ a.cpp; ./a.out

它输出: 复制构造器! 破坏者!

但没有构造器输出!
我很困惑,这是编译器的错误吗?

见图

在创建对象的行中,xyz该对象的地址甚至在创建对象之前就已知。这意味着您可以获取对此(尚未创建(对象的引用,并将其作为参数传递给此对象本身的构造函数。从编译器的角度来看,这是可能的。您不初始化任何字段,因此不会观察到任何使用垃圾初始化的字段。无论如何,你得到了你应得的。

这只是一个理论问题,还是你真的有实际目的?