无标题文章

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()}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第三周 Composition(复合),has-a 图形表示,实心菱形 这里queue功能完全由deque包装实现...
    照照zz阅读 328评论 0 0
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,757评论 0 9
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,181评论 1 0
  • C++ 面向对象编程 博客园地址:http://www.cnblogs.com/xiongxuanwen/p/42...
    先之阅读 687评论 0 1
  • Final 对自己的人生负责对自己做的事和决定所造成的后果负责. video - 7 way to have po...
    Hong2018阅读 159评论 0 0