G++编译器中的一个优化,还是不够标准?
VCRWX 2009-11-13 02:11:34 #include <string>
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"A()"<<endl;
}
A(const A& a)
{
cout<<"A(const A& a)"<<endl;
}
A& operator=(const& a)
{
cout<<"operator=(const& a)"<<endl;
return *this;
}
~A()
{
cout<<"~()"<<endl;
}
};
A getA()
{
A a;
return a;
}
int main()
{
A a = getA();
return 0;
}
这段代码理论是运行结果是
A()
A(const A& a)
~()
~()
可是今天用g++编译器一测试,运行结果为
A()
~()
其中的拷贝构造函数并没调用
然后在vc上运行以下
结果和理论上相同
一直以为g++标准是非常高的,不过也有些地方确实引如了不标准的东西
不过总体看来,g++是对代码进行了优化,不知道各位有何高见?