【Effective C++】实现
作者:互联网
条款26:尽可能延后变量定义式出现时间
- 延后变量定义的时间可提高效率
条款27:尽量少做转型动作
- Derived对象可能拥有不同的地址(当Base* 、Derived*指向该对象时)
- 尽可能使用新转型,因为其容易辨别且对转型类型进行了分类
条款28:避免返回handles指向对象内部成分
- 提高封装性,减小用户直接修改对象内部成员的可能性
1 class Point{}; 2 struct RectData 3 { 4 Point ulhc; 5 Point lrhc; 6 }; 7 class Rectangle{ 8 public: 9 Point &upperleft() const { return pData->ulhc; };//返回了handler,用户可更改内部成员,尽管有const 10 const Point &upperleft() const { return pData->ulhc; };//增加了限定 11 private: 12 std::shared_ptr<RectData> pData; 13 };
条款29:为“异常安全”而努力是值得的
- 见原书
条款30:inline函数
- inline可以被隐喻声明也可以被显示声明(inline关键字)
- 将函数定义在class定义式内是inline的隐喻方式
- inline函数通常一定被置于头文件内,因为大多数建置环境在编译过程中进行inlining,而为了将一个“函数调用”替换为“被调用函数的本体”,编译器必须知道那个函数长什么样子。
1 class Rectangle{ 2 public: 3 Point& upperleft() const { return pData->ulhc; };//inline的方式 4 5 private: 6 std::shared_ptr<RectData> pData; 7 }; 8 Point& Rectangle::upperleft() const { return pData->ulhc; };//非inline
条款31:将文件间的编译依存关系降至最低
- 见原书
标签:const,Effective,Point,实现,pData,C++,return,ulhc,inline 来源: https://www.cnblogs.com/axingzheng/p/16094015.html