C++核心准则​Con.3:默认情况下,传递参照常量的指针或引用

面向对象思考

共 1549字,需浏览 4分钟

 ·

2020-08-17 17:23

秋英

Con.3: By default, pass pointers and references to consts

Con.3:默认情况下,传递参照常量的指针或引用


Reason(原因)

To avoid a called function unexpectedly changing the value. It's far easier to reason about programs when called functions don't modify state.

为了避免被调用的函数意外修改变量的值。当被调用的函数不会修改状态时这么做会使程序的理解更加容易。


Example(示例)

void f(char* p);        // does f modify *p? (assume it does)
void g(const char* p); // g does not modify *p
Note(注意)

It is not inherently bad to pass a pointer or reference to non-const, but that should be done only when the called function is supposed to modify the object.

将指针或者参照传递给非常量也不是就一定不好,但是最好只有在被调用的函数会修改对象时这么做。


Note(注意)

Do not cast away const

不要执行去掉const属性的转换


Enforcement(注意)

  • Flag function that does not modify an object passed by pointer or reference to non-const

  • 如果函数没有修改非常量指针或引用参照的对象,标记它。

  • Flag a function that (using a cast) modifies an object passed by pointer or reference to const

  • 如果函数使用const类型转换修改常量指针或引用参照的对象,标记它。


原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con3-by-default-pass-pointers-and-references-to-consts


新书介绍

《实战Python设计模式》一书是作者最近出版的新书,拜托多多关注!

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。




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

关注微信公众号【面向对象思考】轻松学习每一天!

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



浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报