读书笔记:Effective C++ 2.0 版,条款22(传引用)、条款23(返回引用没有返回对象安全)

条款22: 尽量用"传引用"而不用"传值"

原因是减少不必要的拷贝构造函数、析构函数。

个人觉得,一般情况下,小于等于cpu字长的传值,其它传引用。

范式如下:

c 复制代码
const student& returnstudent(const student& s){ return s; }

引用几乎都是通过指针来实现的,所以通过引用传递对象实际上是传递指针。

如果是一个很小的对象------例如int------传值实际上会比传引用更高效。

条款23: 必须返回一个对象时不要试图返回一个引用

据说爱因斯坦曾提出过这样的建议:尽可能地让事情简单,但不要过于简单。

在c++语言中相似的说法应该是:尽可能地使程序高效,但不要过于高效。

原因是过于高效的方案,往往无法保证安全。

安全、高效有时会产生冲突,这时,安全优先,程序正确优先。

相关推荐
wljy15 小时前
二、进制状态转换
linux·运维·服务器·c语言·c++
云泽8085 小时前
笔试算法 -位运算篇(二):从唯一字符到消失数字
c++·算法·位运算
繁华落尽,倾城殇?6 小时前
[C++11] : atomic,nullptr,default/delete,enum class
开发语言·c++·c++11·nullptr·atomic·enum class·default/delete
代码村新手6 小时前
C++-二叉搜索树
开发语言·c++
智者知已应修善业7 小时前
【51单片机8位数码管动态显示日期小数点风格】2023-11-13
c++·经验分享·笔记·算法·51单片机
智者知已应修善业7 小时前
【51单片机有三个LED 分别第一个灯闪三下 再到第二个灯又闪三下 再到第三个灯又闪三下 就这样循环程序】2023-11-16
c++·经验分享·笔记·算法·51单片机
玖釉-11 小时前
二叉树展开为链表:从先序遍历到原地指针重排
c++·windows·算法·leetcode·链表
Mister西泽11 小时前
C++ Primer Plus 第六版 编程练习题及详细答案
开发语言·c++·学习·visual studio
Qt程序员11 小时前
从上电到系统就绪:ARM+U-Boot 嵌入式 Linux 启动流程
linux·运维·c++·内核·设备树·嵌入式·ram
cany100012 小时前
C++ -- lambda捕获
c++