《Effective C++》笔记 04 - 设计与声明

版权声明:知识共享-署名-相同方式共享(CC-BY-SA) https://blog.csdn.net/engrossment/article/details/88962096
  • 条款 18 - 让接口容易被正确使用,不易被误用。
    • 这是一个很大的准则,具体需要考虑到接口设计的正确性、高效性、封装性、延展性、以及协议的一致性。
    • “促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。
    • “阻止误用”的办法包括尽力新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。
  • 条款 19 - 设计 class 犹如设计 type
    • 这个条款大致可以说就是设计出的新 class(type) 要满足与内置类型的行为兼容。
  • 条款 20 - 宁以 pass-by-reference-to-const 替换 pass-by-value
    • 为了高效。
    • 可以避免传递派生类对象时触发基类构造函数,出现继承降级的情况。
    • 但该条款不适用于内置类型、STL 迭代器以及函数对象。
  • 条款 21 - 必须返回对象时,别妄想返回其 reference。
    • 前一条款主要适用于向函数传递,如果是从函数返回,使用 reference 多半是个坏主意。返回的指针或者引用执行已销毁的栈上空间,必然引起错误。
  • 条款 22 - 将成员变量声明为 private
    • 把所有成员变量生命为 private,可赋予客户访问数据、调用函数的一致性、可细微划分读取和更新、许诺约束条件获得保证,class 作者也获得充分的实现弹性。
  • 条款 23 - 宁以 non-member、non-friend 替换 member 函数。
    • 可以的话,拿 non-member、non-friend 函数替换 member 函数,可以增加封装性、包裹弹性和机能扩充性。
  • 条款 24 - 若所有参数皆需类型转换,请为此采用 non-member 函数。
    • ……
  • 条款 25 - 考虑写出一个不抛异常的 swap 函数
    • ……

条款 24、25 还没真正理解,后面需要再认真看看。

廖杰良 - 2019-4-3

猜你喜欢

转载自blog.csdn.net/engrossment/article/details/88962096