C核心指南I25用空抽象类作为

理由:

抽象类是空的,没有非静态成员数据。比有状态的基类更稳定。

反例:

含有数据的类,只知道Shape会出现在某个地方:

classShape{//bad:interfaceclassloadedwithdatapublic:Pointcenter()const{turnc;}virtualvoiddraw()const;virtualvoidrotate(int);//...private:Pointc;vectorPointoutline;Colorcol;};

这会要求所有继承的类去计算center。可能center从来不会用到。同样的,不是所有形状Shape都有颜色Color,比如那些以点组成的形状。

用抽象类会更好:

classShape{//better:Shapeisapuinterfacepublic:virtualPointcenter()const=0;//puvirtualfunctionsvirtualvoiddraw()const=0;virtualvoidrotate(int)=0;//...//...nodatamembers...//...virtual~Shape()=default;};

强化:

(简单)如果一个叫C的类,它的指针或引用赋值给C的基类指针或引用,而基类又有成员数据。警告。

C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。

C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。

kimim


转载请注明:http://www.aierlanlan.com/grrz/571.html