美文网首页
C++中类的组合(BOOLAN教育)

C++中类的组合(BOOLAN教育)

作者: 坏水强 | 来源:发表于2017-11-12 09:10 被阅读0次

Inheritance(继承),Composition(复合),Delegation(委托)

Composition:has-a

构造函数和析构函数(红色圈起来的表示has a)。如果不显式初始化Container,默认情况下会自动调用Component的构造函数和析构函数。

Deligation(委托):Composition by referrence

个人认为,通过类指针实现has-a。使用指针时注意NULL指针及相关的delete。


Inheritance(继承):is-a

使得继承“活过来”的是虚函数。

virtual函数:derived class可以override 并且自己有默认的定义;

pure virture函数:virtual void fun() const=0;derived class必须重新定义虚函数。

扩展:《C++ primer》

P527动态绑定;

P530(derived-to-base),成立条件P544;

派生类向父类转换,这样可以使用父类指针调用派生类的虚函数!

———————————————————————————————————

Delegation+Inheritance:委托+继承

composite模式:

应用场景:元素和集合,集合由集合和元素组成。

注意:primitive对应元素,但元素中没有数据,而是Componet保存元素的数据,primitive对Component中的数据赋值。Composite对应集合,集合的作用是建立集合(通过父类指针Componet)。ps:Componet中的私有数据最好是vector<int>,因为一个集合中可以有很多元素,而不是只有一个 int。

prototype 模式(这个模式技巧点比较多,复习时建议看视频)

应用场景:父类可以控制未来的子类C++面向对象高级编程(上) - 网易云课堂

注意:

类的构造函数是私有的,需要类的static函数实例化,或者类本身就有一个static 成员,在编译的时候就已经产生了这种类。视频中通过私有的构造函数控制子类的权限,通过父类的clone虚函数创建子类对象。

私有的构造函数解释:http://www.jianshu.com/p/afffb7cccd6d

老师推荐书籍:design patterns explained simply

相关文章

网友评论

      本文标题:C++中类的组合(BOOLAN教育)

      本文链接:https://www.haomeiwen.com/subject/mdiipxtx.html