条款39:明智而审慎地使用private继承(use private inheritance judiciously)

NOTE:

1.private 继承意味 is-implemented-in-terms-of(根据某物实现出)。它通常比复合(composition)的级别低。但是当derivated class需要访问protected base class的

成员,或需要重新定义继承而来的virtual函数时,这么设计是合理的。

2.和复合(composition)不同,private 继承可以造成empty base 最优化。这对致力于“对象尺寸最小化”的程度开发者而言,可能很重要。

时间: 2024-10-27 12:31:58

条款39:明智而审慎地使用private继承(use private inheritance judiciously)的相关文章

Effective C++ 条款39 明智而审慎地使用private继承

1. public继承表明is-a的关系,要求接口的完全继承,而private继承表明"根据某物实现出的关系",要求仅仅继承实现,private继承有两个规则: 1). 经由private继承而来的基类的所有成员在派生类中都会变成private属性 2). 由于1),编译器不允许将派生类转为基类以防止对派生类private成员的非法访问. 2. 由条款38,private继承和复合具有相同作用——"根据某物实现出".两者之间,要尽可能使用复合,除非必要情况.必要情况

Effective C++ Item 39 明智而审慎地使用 private 继承

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:private 继承意味 is-implemented-in-terms of.它通常比 composition 的级别低. 但是当 derived class 需要访问 protected base class 的成员,或需要重新定义继承而来的 virtual 函数时,这么设计是合理的 经验:和 composition 不同, private 继承可以造成 empty base 最

Effective C++:条款39:明智而审慎地使用private继承

(一) (1)private继承意味着"依据某物实现出".仅仅有实现部分被继承.接口部分应略去: (2)它仅仅在软件"实现"层面上有意义,在软件"设计"层面上没有意义. (3)private继承而来的基类成员都会在派生类中成为private属性,纵使它们在base class中原本是protected或public属性: (4)假设类之间是private继承关系.编译器不会自己主动将一个派生类对象转换为基类对象. (5)D类以私有形式继承B类,意

Effective C++ -----条款39:明智而审慎地使用private继承

Private继承意味is-implemented-in-terms of(根据某物实现出).它通常比复合(composition)的级别低.但是当derived class需要访问protected base class的成员,或需要重新定义继承而来的virtual函数时,这么设计是合理的. 和复合(composition)不同,private继承可以造成empty base最优化.这对致力于“对象尺寸最小化”的程序库开发者而言,可能很重要.

条款39:明智的使用private继承

首先看一下private继承的法则:class之间的继承关系如果是private的话,那么编译器不会将一个derived对象自动当作为一个base class对象. 从base class继承而来的所有方法以及属性,在derived class都会变成是private的. private继承的底层含义实际上是:implemented in terms of,通过private继承的主要目的是使得derived class使用base 已经做好的某些东西,但是外部仍然是无法岁base class的

Effective C++:条款40:明智而审慎地使用多重继承

(一) 慎用多重继承,因为那样的话可能会造成歧义.. <pre name="code" class="cpp">class BorrowableItem { public: void checkOut(); }; class ElectronicGadet { private: bool checkOut() const; }; class MP3Player : public BorrowableItem <pre name="code

条款40:明智而审慎的使用多重继承

多重继承(multiple inheritance:MI)在C++阵营中有不同主张.一个是:如果认为单一继承(single inheritance:SI)是好的,那么多重继承一定也是好的:另一个是:单一继承是好的,但是多重继承不是.本条款主要让大家了解这两个观点. 当使用MI时,程序可能从一个以上base classes继承相同名称(函数.typedef等),这会导致歧义(ambiguity) clas BorrowableItem{ public: void checkOut(); -- };

Effective C++ -----条款40:明智而审慎地使用多重继承

多重继承比单一继承复杂.它可能导致新的歧义性,以及对virtual继承的需要. virtual继承会增加大小.速度.初始化(及赋值)复杂度等等成本.如果virtual base classes不带任何数据,将是最具实用价值的情况. 多重继承的确有正当用途.其中一个情节涉及“public继承某个Interface class"和”private继承某个协助实现的class“的两相组合.

明智而审慎的使用private继承

private继承的意义在于“be implemented in turns of”. private继承与public继承时完全不同的,主要体现在两个地方 其一,public继承在子类中保持父类的访问权限,即父类中是public的成员函数或者成员便变量可,在子类中仍是public,对private或protected 的成员函数或成员变量亦是如此:但private继承则不是这样的,他破坏了父类红的访问权限标定,将之转成为private,这对子类本省并无影响,但却影响了子类的子类,子类的子类将无