美文网首页
无标题文章

无标题文章

作者: 杨嘉莉 | 来源:发表于2018-04-08 20:03 被阅读0次

    Boolan-C++面向对象高级编程(上)第三周笔记

    类与类之间的关系

    一.继承 inheritance:is a (父[base]与子[derived]关系)

    结构


    构造函数由内而外derived::derived(……):base(){……}

    析构函数由外而内derived::~derived(……){……~base() }

    继承的方式:

    1. Public继承

    2. Private继承

    3. Protected继承

    函数种类:

    1.非虚函数:不希望derive  class重新定义

    如:Int objectID() const;

    2. 虚函数:希望重新定义  ,父类没办法写(但已有默认定义),只有子类写

    如:Virtual void draw() const = 0 ;

    3. 纯虚函数:希望derive重新定义(没有默认定义)

    如:Virtual void error(const std::string& msg);

    引入思想:Template method 应用框架,固定的先写好,未定的写成虚函数,留待子class完善

    在application framework中,定义好框架,其中serilize()是未定的。在application中,实现了类CmyDoc的显示,但要跟之前的模板连接起来,使用virtual虚函数来定义。

    在main函数中,整个的运行就是:创建一个CmyDoc文件,运行到打开myDoc时,调用框架中来实现,在CDocment中由于serilize部分具体实现在类CmyDoc中,所以转而调到CmyDoc,待serilize结束后,回到CDocment继续未完部分,CDocment完成后,再回到main完成程序的运行。

    二. 复合composition:private中,类中有类(实)has a

    结构:


    构造函数由内而外container::container(……):component(){……}

    析构函数由外而内container::~container(……){……~component() }

    三.委托delegation:指针(虚)(composition

    by reference)

    小思考:


    1. 构造:Derived::Derived(……):base(),component(){……}

    析构:Derived::~Derived(……){……~base(),~component()}

    2. 构造:base::base(……):component(){……}

                  Derived:: Derived(……):base(){……}

         析构:Derived::~Derived(……){……~base()}

                 base:: ~ base(……){……~component()}

    相关文章

      网友评论

          本文标题:无标题文章

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