当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C++函数返回对象基础学习

以下函数ReturnObjectDirect与ReturnObject分别调用了多少次构造函数?
#include <iostream>
using namespace  std;

class Base
{
public:
    Base( )
    {
        cout<<\"缺省构造函数\"<<endl;
    }
    Base(const Base & other)
    {
        cout<<\"复制构造函数\"<<endl;
    }
    ~Base()
    {
        cout<<\"析造函数\"<<endl;
    }
};

Base ReturnObjectDirect( )
{   
    return Base();
}

Base ReturnObject()
{   
    Base ret;
    return ret;
}

int main()
{
    Base obj1 =ReturnObjectDirect();
    Base obj2 =ReturnObject();
    
    return 0;

ReturnObjectDirect函数由于编译器优化所以只调用了一次缺省构造函数!

而ReturnObject函数
Base ret;                 //这里调用了一次缺省构造函数
return ret;          //调用拷贝构造函数将ret赋给临时变量
所以总共调用了二次构造函数!
相关内容
赞助商链接