专栏首页C++核心准则原文翻译C++核心准则编译边学-F.47 赋值运算符应该返回T&

C++核心准则编译边学-F.47 赋值运算符应该返回T&

F.47: Return T& from assignment operators

F.47 赋值运算符应该返回T&。

Reason(原因)

The convention for operator overloads (especially on value types) is foroperator=(const T&) to perform the assignment and then return (non-const)*this. This ensures consistency with standard-library types and follows the principle of "do as the ints do."

运算符重载的习惯(特别是值类型)是在operator=(const T&)中执行赋值操作然后返回(非常量)*this。这保证了和标准库类型的一致性而且遵守了“像整数一样动作”的准则。

译者注:“像整数一样动作”应该说的是,使用重载的赋值运算符的代码,看起来要和使用整数赋值运算符的代码具有同样的形式。

Note(注意)

Historically there was some guidance to make the assignment operator return const T&. This was primarily to avoid code of the form (a = b) = c -- such code is not common enough to warrant violating consistency with standard types.

历史上存在过某些保证赋值操作会返回const T&的准则。其主要目的是避免(a=b)=c--形式的代码,但这种代码的普遍性还不足以将其视为和对标准类型一致性的违反。

Example(示例)

class Foo
{
 public:
    ...
    Foo& operator=(const Foo& rhs) {
      // Copy members.
      ...
      return *this;
    }
};
Enforcement(实施建议)

This should be enforced by tooling by checking the return type (and return value) of any assignment operator.

应该强制对任何赋值运算符的返回值类型(和返回值)进行工具化检查。

觉得本文有帮助?请分享给更多人。

关注【面向对象思考】,轻松学习每一天!

有任何疑问,欢迎留言提问或讨论。


面向对象设计,面向对象编程,面向对象思考!

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则​T.140:为所有可能重用的操作命名

    T.140: Name all operations with potential for reuse

    面向对象思考
  • C++核心准则ES.41: 如果对操作符的优先级有疑问,使用括号明确运算次序

    Avoid errors. Readability. Not everyone has the operator table memorized.

    面向对象思考
  • C++核心准则编译边学-F.16 对于输入参数来说,拷贝代价小的传值,其他传递const参照

    Both let the caller know that a function will not modify the argument, and both ...

    面向对象思考
  • Android TV开发总结【RecycleView】

    在TV开发中RecycleView的使用是最让人头疼的经常会出现焦点丢失。因为当item未显示时不能获取焦点。所以当我们按上下键时经常丢失焦点或者焦点乱跳。要解...

    先知先觉
  • LintCode-111.爬楼梯

    假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

    悠扬前奏
  • JS监听页面关闭

    JS可以监听浏览器页面的关闭,主要使用了window对象的onbeforeunload方法

    书童小二
  • String - 242. Valid Anagram

    Given two strings s and _t _, write a function to determine if t is an anagram o...

    用户5705150
  • python第十四课--排序及自定义函数之自定义函数(案例三)

    return关键字的使用: 1).结束函数 2).将结果返回给函数的调用者/调用处 【注意事项】 1).与return同一作用范围内的后面不要显示书写任何代...

    hankleo
  • Python finally的用法

    try语句有一个可选finally子句,用于定义在所有情况下都必须执行的finally操作

    于小勇

扫码关注云+社区

领取腾讯云代金券