前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++核心准则C.160:定义运算符主要是为了模仿习惯用法

C++核心准则C.160:定义运算符主要是为了模仿习惯用法

作者头像
面向对象思考
发布2020-03-25 16:57:33
2230
发布2020-03-25 16:57:33
举报

C.160: Define operators primarily to mimic conventional usage

C.160:定义运算符主要是为了模仿习惯用法

Reason(原因)

Minimize surprises.

让程序看起来更自然。

Example(示例)

代码语言:javascript
复制
class X {
public:
    // ...
    X& operator=(const X&); // member function defining assignment
    friend bool operator==(const X&, const X&); // == needs access to representation
                                                // after a = b we have a == b
    // ...
};

Here, the conventional semantics is maintained: Copies compare equal.

这里,赋值,相等比较的习惯语义得以保持。

Example, bad(反面示例)

代码语言:javascript
复制
X operator+(X a, X b) { return a.v - b.v; }   // bad: makes + subtract
Note(注意)

Nonmember operators should be either friends or defined in the same namespace as their operands. Binary operators should treat their operands equivalently.

非成员运算符应该要么是友元函数,要么和操作对象定义在一起。二进制运算符应该同等对待操作对象。

Enforcement(实施建议)

Possibly impossible.

可能无法做到。

原文链接:

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c160-define-operators-primarily-to-mimic-conventional-usage


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

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

面向对象开发,面向对象思考!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面向对象思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C.160: Define operators primarily to mimic conventional usage
    • Reason(原因)
      • Note(注意)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档