首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于拷贝构造函数的有关问题

2013-02-24 
求助一个关于拷贝构造函数的问题麻烦看一下这段很简单的代码:#include iostreamusing namespace stdcla

求助一个关于拷贝构造函数的问题
麻烦看一下这段很简单的代码:

#include <iostream>
using namespace std;
class A
{
public:
A(){cout<<"A construct"<<endl;}
A(A const& a){cout<<"A copy construct"<<endl;}
~A(){cout<<"A destruct"<<endl;}
};

A buildA()
{
A aa;
return aa;
}

int main()
{
A b = buildA();
return 0;
}

可能很多用惯了VS的朋友会觉得输出的应该是:
cons
copy cons
des
des
的确是这样,但是把这段代码copy到默认使用GCC编译器的code::blocks里面时输出的却是:
cons
des
避免了一次copy。我输出aa和b的地址发现,果然他们是一样的。我想这可能是GCC在这方面优化比较好吧。
但是当我在cb里面把编译器换成vs2010后,竟发现,输出的也是
cons
copy
我这就搞不懂了,如果是编译器的问题,那输出的应该和之前在VS里面一样才对啊。是不是在CB里面用的VS编译器优化级别不一样还是怎么的?请各位大牛们指点下,谢谢。 gcc c++
[解决办法]
那是因为一种比较成熟的优化技术,叫返回值优化。。你可以去百度一下。

热点排行