开源中文网

您的位置: 首页 > 编程开发 > 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赋给临时变量 
所以总共调用了二次构造函数!

Tags:函数 对象 基础
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明