首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C++核心准则编译边学-F.44 在不希望得到拷贝而且不需要返回值为空时返回T&

C++核心准则编译边学-F.44 在不希望得到拷贝而且不需要返回值为空时返回T&

作者头像
面向对象思考
发布2020-03-25 15:28:16
发布2020-03-25 15:28:16
1.5K0
举报

F.44: Return a T& when copy is undesirable and "returning no object" isn't needed

F.44 在不希望得到拷贝而且不需要返回值为空时返回T&。

译者注:不希望的到拷贝的含义是只是调用接口。

Reason(原因)

The language guarantees that a T& refers to an object, so that testing for nullptr isn't necessary.

语言保证T&一定会参照某个对象,因此不需要nullptr检查。

See also: The return of a reference must not imply transfer of ownership:discussion of dangling pointer prevention and discussion of ownership.

参见:返回引用时一定不要包含传递所有权的含义:关于防止悬空指针的讨论,关于所有权的讨论。

Example(示例)
代码语言:javascript
复制
class Car
{
    array<wheel, 4> w;
    // ...
public:
    wheel& get_wheel(int i) { Expects(i < w.size()); return w[i]; }
    // ...
};

void use()
{
    Car c;
    wheel& w0 = c.get_wheel(0); // w0 has the same lifetime as c
}
Enforcement(实施建议)

Flag functions where no return expression could yield nullptr。

标示没有返回表达式生成nullptr的函数。

译者注:这个建议应该仅限于返回值是指针类型的函数。

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

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

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


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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • F.44: Return a T& when copy is undesirable and "returning no object" isn't needed
    • Reason(原因)
    • Example(示例)
    • Enforcement(实施建议)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档