1 | ➜ sudo apt update |
执行:
1 | ➜ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 871920D1991BC93C |
1 | ➜ sudo apt update |
执行:
1 | ➜ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 871920D1991BC93C |
Item28: Avoid returning “handles” to object internals.
避免返回 handles
(包括 references
、指针、迭代器)指向对象内部。
Item 26:Postpone variable definitions as long as possible.
推迟变量的定义有两个好处:
这条规则看似简单,但存在流程控制语句的时候容易疏忽。如:
1 | string encryptPassword(const string& password){ |
Item 25: Consider support for a non-throwing swap.
swap
函数能置换两对象值,功能很重要!
std
的缺省基本实现如下:
1 | namespace std { |
Item 24: Declare non-member functions when type conversions should apply all parameters.
令 classes
支持隐式转换通常是糟糕的设计,但也有例外,最常见的是在建立数值类型时。 比如设计一个有理数 class
允许整数隐式转换。
Item 23: Prefer non-member non-friend functions to member functions
Item 22: Declare data members private.
Item 21: Don’t to return a reference when you must return an object.
Item 20 中提到,多数情况下传引用比传值更好。但不要无脑追求这一点,一定不要返回空引用或指针。
Item 20: Prefer pass-by-reference-to-const to pass-by-value.
缺省情况下C++
用传值得方式(一个继承自C
的方式)传递对象至(或来自)函数。除非你另外指定,否则函数参数都是以实际实参的复件(副本)为初值,而调用端所获得的亦是函数返回值的一个复件。这些复件(副本)系由对象的copy
构造函数产出。
尽量以传常量引用替换传值前者通常比较高效,并可避免切割问题 (slicing problem
),但是内置类型和 STL
迭代器,还是传值更加合适。。