打印

构造函数问题

[复制链接]
1129|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2013-8-27 19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
网上说这个函数的运行会调用拷贝构造函数  但是为什么运行后 copy 这个字符串不会打印  也就是说没有调用拷贝构造函数吗?
class CExample
{
private:
int a;

public:
//构造函数
CExample(int b)
{
  a = b;
}

//拷贝构造
CExample(const CExample& C)
{
  a = C.a;
  cout<<"copy"<<endl;
}

     void Show ()
     {
         cout<<a<<endl;
     }
};

//全局函数
CExample g_Fun()
{
CExample temp(0);
return temp;
}

int main()
{
g_Fun();
return 0;
}

相关帖子

沙发
火箭球迷| | 2013-8-27 19:36 | 只看该作者
你这里没有拷贝,当然不会输出copy了

使用特权

评论回复
板凳
xsgy123| | 2013-8-27 19:51 | 只看该作者
这种情况是标准允许的返回值优化,直接把函数体内返回的对象当成外面被返回的对象再用了

使用特权

评论回复
地板
sinadz| | 2013-8-27 20:05 | 只看该作者
标准规定的东西通过调试是看不到的。调试只能反映出你手上拿到的编译器的具体行为,但是编译器本身却不会告诉你它为什么要设计成具有这样的行为。这些你只能找到原始的标准文档才能知道。毕竟不同厂商的编译器都得按照标准文档的要求去设计。编译器要和标准规定的行为相一致,而不是标准根据某家编译器的具体行为编写出来的。

使用特权

评论回复
5
dfsa| | 2013-8-28 19:18 | 只看该作者
没太看明白

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝