虚函数绝不使用缺省参数值-*重构*改善既有代码的设计(带完整书签)

时间:2021-06-08 00:09:28
【文件属性】:
文件名称:虚函数绝不使用缺省参数值-*重构*改善既有代码的设计(带完整书签)
文件大小:1.28MB
文件格式:PDF
更新时间:2021-06-08 00:09:28
C++ 编程规范 原则4.5 避免使用多重继承 说明: 相比单继承,多重实现继承可重用更多代码;但多重继承会显著增加代码的复杂性,程序可维 护性差,且父类转换时容易出错,所以除非必要,不要使用多重实现继承,使用组合来代替。 多重继承中基类都是纯接口类,至多只有一个类含有实现。 规则4.12 使用public继承而不是protected/private继承 说明:public继承与private继承的区别:  private继承体现"由...来实现"的关系。编译器不会把private继承的派生类转换成基类,也就是 说,私有继承的基类和派生类没有"是...一个"的关系。  public继承体现"是...一个"的关系,即类B public继承于类A,则B的对象就是A的对象,反之则 不然。例如“白马是马,但马不是白马”。 对继承而言,努力做到"是...一个"的关系,否则使用组合代替。 private继承意味"由...来实现",它通常比组合的级别低,与组合的区别:  private继承可以访问基类的protected成员,而组合不能。  private继承可以重新定义基类的虚函数,而组合不能。  尽量用组合代替private继承,因为private继承不如组合简单直观,且容易和public继承混淆。 规则4.13 继承层次不超过4层 说明:当继承的层数超过4层时,对软件的可维护性大大降低,可以尝试用组合替代继承。 规则4.14 虚函数绝不使用缺省参数值 说明:在C++中,虚函数是动态绑定的,但函数的缺省参数却是在编译时就静态绑定的。这意味着你最 终执行的函数是一个定义在派生类,但使用了基类中的缺省参数值的虚函数。因此只要在基类中定义 缺省参数值即可,绝对不要在派生类中再定义缺省参数值。 示例:虚函数display缺省参数值strShow 是由编译时刻决定的,而非运行时刻,没有达到多态的目的: class Base { public: virtual void display(const std::string& strShow = "I am Base class !") { std::cout << strShow << std::endl; } virtual ~Base(){} }; class Derive: public Base { public: virtual void display(const std::string& strShow = "I am Derive class !") {

网友评论