紫辉星河 2017-08-14 07:15 采纳率: 100%
浏览 861
已采纳

C++复制构造函数的疑问

书上说调用复制构造函数有三种情况,但在测试第三种时(如果函数的返回值是类的对象,函数执行完成返回调用者时)发现没有调用复制构造函数,代码如下:
#include
using namespace std;

class Point
{
public:
Point(int x=0,int y=0):x(x),y(y){}
Point(const Point &p)
{
cout << "call copy constructor" << endl;
x = p.x;
y = p.y;
}
int getX() const
{
return x;
}
int getY() const
{
return y;
}
private:
int x;
int y;
};

Point fun()
{
Point a(1,2);
return a;
}

int main(void)
{
Point a = fun();
cout << a.getX() << endl;

return 0;

}

  • 写回答

2条回答 默认 最新

  • forestzhu01 2017-08-14 08:23
    关注

    理论上调用,但是有的编译器会对这个进行优化

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同