一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

C++函数返回类对象的例子

时间:2014-04-08 编辑:简简单单 来源:一聚教程网

下面的例子分别用Visual Studio 2012中的编译器(默认和O2优化结果不一样哦)和G++4.7.2(mingw)结果。

 代码如下 复制代码


#include
using namespace std;
class A
{
    public:
        int a;

        A(int i):a(i)
        {
            cout << "A() :" << a << endl;
        }

        ~A()
        {
            cout << "~A()" << a << endl;
        }

        A(const A& x):a(x.a)
        {
            cout << "copy A()" << a << endl;
        }
};
A test1()
{
    return A(1);  
}
A test2()
{
    A tmp(2);
    return tmp;
}
int main()
{
    A a = test1();
    A b = test2();
    cout << "before exit" << endl;
    return 0;
}

 

image

image
image

可以看出,编译器面对这样的情况都做了相关的优化,VS2012自带的编译器默认情况下才能看到copy 构造函数的调用。

热门栏目