美文网首页
博览网--C++面向对象高级编程(上)-- C++学习第三周笔记

博览网--C++面向对象高级编程(上)-- C++学习第三周笔记

作者: 曹伟大 | 来源:发表于2017-10-30 14:21 被阅读0次

面向对象的三种关系

一、继承

继承可以i表示为 is-a

public/private/protected 继承方式

构造先父类构造, 后子类, 析构子类先析构, 父类再析构

base class的dtor必须时virtual


二、复合 composition  


继承可以表示为 has-a

构造由内到外, 析构由外到内

Adaptor, 可以通过复合方式实现

三、委托 composition by reference

handle /body,  pimpl  

复合包含使用类的实体, 委托只包含他的指针

四、多态:

1 带有virtual的继承 

  1) non-virtual函数 : 不希望derived class 重新定义(override)

  2) virtual 函数        : 希望derived class 重新定义(override)

  3) pure virtual 函数: 希望derived class 必须重新定义

Template method application framework 将实现延迟到子类中实现

子类再调用父类函数时, 将this 指针传入, 在父类函数执行其他函数是通过this指针调用,从而实现了实现的延时

五、继承复合委托组合情形:

1) 继承+复合

derviced 类中组合component时 构造析构的执行顺序

在VS/gcc 下试验了一下, 子类含复合类, 构造执行顺序是

base

component

derived

析构顺序刚好相反

2) 委托+继承 observer 通过外部类观察一个类的变化

3) 委托+继承 composit 包含简单和复杂的类(不可以使用纯虚函数)

4)委托+继承 prototype  创建未来要涉及的类,构造函数私有(需要通过原型创建)

     每一个子类自己有子一个个体, 有一个构造函数将个体挂载到父类, 每一个子类有个clone,框架端可以通过clone生成子类的副本

(class静态data 要在class 外进行一次定义)

相关文章

网友评论

      本文标题:博览网--C++面向对象高级编程(上)-- C++学习第三周笔记

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