C/C++教程

【Effective C++】实现

本文主要是介绍【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:将文件间的编译依存关系降至最低

  • 见原书
这篇关于【Effective C++】实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!