1. public继承表明is-a的关系,要求接口的完全继承,而private继承表明"根据某物实现出的关系",要求仅仅继承实现,private继承有两个规则: 1). 经由private继承而来的基类的所有成员在派生类中都会变成private属性 2). 由于1),编译器不允许将派生类转为基类.....
分类:
编程语言 时间:
2015-09-10 23:53:27
阅读次数:
229
在《代码大全》这本书的第六章中提到了有关包含与继承的一些原则,我摘取如下: 一、包含("has a") 包含表示一个类含有一个基本数据元素或对象。包含是面向对象编程的主力技术。 (1)通过包含来实现"has a"的关系。 (2)在万不得已时通过private继承来实现"has a"的关系。 (3)警...
分类:
编程语言 时间:
2015-09-05 13:46:30
阅读次数:
211
对于类以及类继承, 几个主要的问题:1) 继承方式: public/protected/private继承. 这是c++搞的, 实际上继承方式是一种允许子类控制的思想. 子类通过public继承, 可以把基类真实还原, 而private继承则完全把基类屏蔽掉. 这种屏蔽是相对于对象层而言的,...
分类:
编程语言 时间:
2015-08-31 11:29:01
阅读次数:
227
在学习设计模式时我就有一个疑问,关联和继承除了用法上的区别,好像在内存上并没有什么区别,继承也是父类作为了子类的元素(内存上),关联也是这样。而且关联好像更占内存一些。这就是设计模式里问题了“依赖倒转原则”。继承分为public继承,protect继承,private继承public:父类中的pub...
分类:
编程语言 时间:
2015-07-18 19:46:05
阅读次数:
150
继承相关知识:private继承对派生类不可见(exist but not accessable)private 和protect 继承不允许基类指针指向派生类(编译error: 'BaseClass' is an inaccessible base of 'DerivedClass'
reinterpret_cast可以将private继承的派生类指针强制转化为基类指针(通过pbase = st...
分类:
编程语言 时间:
2015-06-27 18:19:32
阅读次数:
175
1、审慎添加新class如何被创建,被析构复制行为如何有什么默认行为是需要被禁止的和其他类之间关系如何(设计模式的领域)支持怎么样的类型转换一般性如何(模板编程)2、合理运用几种类间关联关系public继承是 is-a 关系聚合是 has-a 或者 通过a去实现private继承也是通过a实现,只有...
分类:
其他好文 时间:
2015-06-09 19:10:19
阅读次数:
108
我从本条款中学到了以下内容:
1.private继承不同于另外两种继承,派生类对象不能隐式转换为基类对象。如下代码:class Bird//鸟
{};class ostrich:private Bird//鸵鸟
{};int main()
{
Bird *b = new ostrich();//编译不通过,基类不能转换为派生类}编译器明确指出基类是不可访问的,所以转换失败。private继承在基...
分类:
编程语言 时间:
2015-06-03 09:43:51
阅读次数:
108
封装:面向对象思想以功能划分各个模块,封装使各个模块只需要提供实现的接口,而隐藏其具体的实现。这样带来的好处就是模块灵活性的提高,我们可以修改各个模块的具体实现,只需要保证其公开的接口实现即可。关键字:public private继承:继承自父类的子类可以拥有父类的public 以及protecte...
分类:
其他好文 时间:
2015-04-11 22:20:19
阅读次数:
123
Private继承意味is-implemented-in-terms of(根据某物实现出)。它通常比复合(composition)的级别低。但是当derived class需要访问protected base class的成员,或需要重新定义继承而来的virtual函数时,这么设计是合理的。和复合...
分类:
编程语言 时间:
2015-03-21 22:51:53
阅读次数:
233
条款38通过复合塑模树has-a 或根据某物实现出
条款39明智而审慎的使用private继承...
分类:
编程语言 时间:
2015-03-08 21:35:00
阅读次数:
229