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

关于复制构造函数的一个有关问题

2013-08-04 
关于复制构造函数的一个问题#include iostreamusing namespace stdclass A{public:A(int i){cout执

关于复制构造函数的一个问题
#include <iostream>
using namespace std;
class A
{
public:
    A(int i){cout<<"执行构造函数,创建一个对象\n";x=i;}
    A(A&a){x=a.x;cout<<"执行复制构造函数创建一个对象\n";}
    ~A(){cout<<"执行析构函数!\n";}
    int get()const{return x;}
private:
    int x;
};
A func()
{
    cout<<"跳转到func函数中!\n";
    A a(23);
    cout<<"对象a的地址为:"<<&a<<endl;
    return a;
}
 int main()
{
    const A &r=func();
    cout<<"对象a的副本的地址:"<<&r<<endl;
    cout<<r.get() <<endl;
    return 0;
}


我用eclipse运行结果是:
跳转到func函数中!
执行构造函数,创建一个对象
对象a的地址为:0x22ff08
对象a的副本的地址:0x22ff08
23
执行析构函数!
我想问的是,为什么没有调用复制构造函数产生一个副本? c++ Eclipse 类
[解决办法]
你认为哪里应该有复制构造函数?
[解决办法]
  const A &r=func();返回值优化,RVO.不会产生复制构造。

热点排行