qq_43415720 2019-05-10 09:46 采纳率: 100%
浏览 638
已采纳

对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 03:15
    关注

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

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

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部