一心只想AC 2023-04-16 22:52 采纳率: 75.9%
浏览 19
已结题

对象作返回值时没有调用拷贝函数


#include<iostream>
using namespace std;
class Point {
public:
    Point(int a, int b);
    Point(const Point& p);
    void print()
    {
        cout << x << " " << y << endl;
    }
private:
    int x, y;
};
Point::Point(int a, int b)
{
    x = a;
    y = b;
    cout << "Using normal constructor." << endl;
}
Point::Point(const Point& p)
{
    x = 2 * p.x;
    y = 2 * p.y;
    cout << "Using copy constructor." << endl;
}
void fun1(Point p)
{
    p.print();
}
Point fun2()
{
    Point p4(10, 30);

    return p4;
}
int main()
{
    Point p1(30, 40);

    p1.print();

    Point p2(p1);

    p2.print();
    Point p3 = p1;
    p3.print();
    fun1(p1);

    p2 = fun2();
    p2.print();
    return 0;

}

img


书上的例子我完全照抄,结果却不一样,这个最后一行结果是10 30,应该为20 60。
书上说对象作返回值时会调用拷贝函数赋值给一个临时对象,那应该会×2倍啊。而且应该会输出Using copy constructor.但实际情况并没有,我想知道这是为什么!
感谢回答!

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-04-17 10:00
    关注

    VS2019 里运行如图:

    img

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

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 创建了问题 4月16日

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算