qq_43415720 2019-05-10 17:46 采纳率: 100%
浏览 634
已采纳

对C++成员函数级联调用的一点问题

在C++成员函数级联调用时为什么一定要加&?比如下面这段代码:

#include <iostream>
using namespace std;
class Number
{
public:
    Number(int a)
    {
        x = a;
    }
    Number add(int a)
    {
        x += a;
        return *this;
    }
    void print()
    {
        cout << x<<endl;
    }
private:
    int x;
};
int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    Number n(a);
    n.add(b).add(c);
    n.print();
}

输入3,4,5,输出7,只是加了前两个数,如果在Number类的add前面加上&则可得出正确结果,这个&到底有什么作用一定要加?

  • 写回答

3条回答 默认 最新

  • w-haiS 2019-05-11 11:15
    关注

    图中那个add函数,返回的是一个*this ,this是一个该对象的地址,*this是一个值向该对象的地址,在主函数中n.add(b)返回的是一个指向该对象的临时变量,可以理解为是一种对象的拷贝,当你再执行add(c)时,对象就是拷贝的临时变量了,当你下面执行的print函数时,使用的还是原来的变量,不是临时变量。
    可能我说的有点乱,看一下这个吧https://www.cnblogs.com/strivingforever/p/8527301.html 希望对你有帮助

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

报告相同问题?

悬赏问题

  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题