本文主要是介绍【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++】实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!