You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中combine函数返回*this的作用是什么?

为什么Sales_data::combine要返回*this?

先看你提供的代码:

Sales_data& Sales_data::combine(const Sales_data &rhs)
{
    units_sold += rhs.units_sold; // add the members of rhs into
    revenue += rhs.revenue; // the members of ''this'' object
    return *this; // return the object on which the function was called
}

你说得没错,改成void确实能完成单次合并的核心操作,但返回*this(准确说是当前对象的引用)是为了支持更灵活的用法,主要有这几个原因:

  • 支持链式调用:
    要是返回引用,你可以把多个合并操作串起来写,比如:

    Sales_data data1, data2, data3;
    // 一次性把data2、data3都合并到data1里
    data1.combine(data2).combine(data3);
    

    要是返回void,你就得拆成两行单独调用,链式写法在多合并场景下更简洁。

  • 贴合C++编程惯例:
    C++里像operator+=这类操作符,不管是内置类型还是自定义类,通常都会返回自身的引用,这种设计是行业通用的惯例,用户用起来会觉得符合直觉,和已有代码风格统一。

  • 允许在表达式中直接复用结果:
    比如你想合并后直接获取对象的ISBN或者输出,可以这么写:

    cout << data1.combine(data2).isbn() << endl;
    

    要是返回void,这行代码会直接报错——因为void类型没法调用后续的.isbn()方法。

简单说,返回*this不是为了完成单次合并的基础功能,而是为了让这个函数的用法更灵活,给后续代码留足扩展空间,同时贴合C++的通用编程习惯。

内容的提问来源于stack exchange,提问作者Saad Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:04:58