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

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

作者: 博览网小学员 | 来源:发表于2017-08-01 22:49 被阅读0次

    博览网学习笔记:

    第三周课程的知识点:

    11.组合与继承

    注意:前两周讲的是单个类的设计,即基于对象编程。

    本周是讲类与类之间的关系,即面向对象编程。

    类与类的三种关系:

    1.复合composition

    1)我们举例来解释复合:

    我们新建一个类queue,queue中含有deque,因deque功能强大,queue使用的功能,即queue包含deque的功能,我们称之为复合关系。(即只要A含有B,则就是一种复合关系)。次例中queue功能都由deque实现。

    其关系可用下图表示:

    2)复合的关系下的构造与析构:

    上图也可表示为:

    构造函数由由内(component)而外(container)!

    container的构造函数首先调用component的默认的构造函数,然后执行自己的构造函数。(这部分知识,我么只需要了解即可。编译器会自动帮助我们正确调用函数)

    析构,由外(container)而内(component)!

    container的析构函数首先执行自己的析构函数,然后调用component的析构函数。(若先执行component的析构函数,则内部崩塌,编译器报错)

    2.委托delegation

    1)一种特殊的复合关系,不是含有component,而是含有component的指针。

    2)表示为:

    3.继承inheritance

    1)举例:

    class a

    {

    ........

    }

    class b:public a {};

    即类b继承类a中的功能,或者说类b是一种类a(子类b中有父类a的成分)。

    2)表示为

    注意:父类的析构函数必须是虚函数,否则会报错

    3)构造与析构函数的执行顺序:

    构造函数由内而外:

    子类,也即衍生类(derived)的构造函数先调用父类(base)的默认构造函数,然后执行自己的;

    析构由内外而内:

    子类先执行自己的析构函数,然后才调用父类的析构函数;

    12.虚函数与多态

    1.初识虚函数:

    非虚函数(non-virtual):不希望子类重新定义(override)这个函数;

    虚函数(virtual):希望子类重新定义(override)这个函数,且父类以对其进行默认定义,但子类不是必须定义这个函数;

    纯虚函数(pure virtual):希望子类一定重新定义(override)这个函数;对其没有默认定义,例:virtual void draw()const=0

    2.继承搭配上虚函数才可以强而有力

    1).子类可以继承父类的所有内容,包括数据和函数。

    2).从内存角度,可以继承数据

    3).对于函数,不能从内存角度理解,而是子类继承了父类的函数调用权。

    13.委托相关设计

    设计模式之composite:

    以file system为例:

    设计模式之Prototype,笔记见下图:

    相关文章

      网友评论

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

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