Boolan C++面向对象高级编程学习第三周

本周c++面向对象编程主要讲的是类于类之间的关系

1、复合(composition)

复合类又称组合类,是一个类里面的数据成员是另一个类的对象,即内嵌其他类的对象作为自己的成员。

这种一般是数据成员类具有该类的大量相同的特性,可以为该类提供接口

这种组合类是先调用成员类的构造函数进行构造,然后在执行自己本身的构造函数,而析构与之相反,先析构自己本身,在执行成员类的析构函数

2、委托(Delegation)

委托类和组合类的区别在于,类的数据成员时一个类的指针,这种相当于类里面只有一个指针的接口,真正的实现了数据(body)和接口(Handle)的分离

3、继承(inheritance)

前面两种只是一个类作为类成员或类成员的指针,为该类提供实现接口,但是继承则是一种is a的概念

继承分为 public,private,protect

这个我们一般用public方式来继承,相当于子类具有除私有父类私有的所有属性

这里子类的构造方式是先调用父类的构造函数,在调用自己的构造函数

析构函数则是先地哦啊用自己的,然后再执行父类的析构函数,    这里需要注意的是父类的析构函数必须是virtual的

 

这里我们类这个重要的继承特性,经常和虚函数这个特性来实现多态性,结合在一起使用

如果父类不是虚函数的话,那么子类可以调用父类的函数,但是不能写相同的函数

这里我们的虚函数有两种形式:

1、普通的虚函数

 virtual void error(const std::String & msg);

这种父类的成员函数最前面加了virtual, 子类可以进行重新定义,或者不定义

 

2、纯虚函数

virtual void draw() const = 0;
这种父类的成员函数=0的方式,表示为纯虚函数,这是为了告诉后面的人要继承这个类,这个函数必须要重新定义

我们最后对委托的相关设计进行了简要的讲解
1、单数据源,多界面显示
2、文件系统
3、树状继承体系

这周的学习,让我对c++面向对象的特性有了更深人的了解,类与类的继承,通过比较类相同的特性来实现类的复用性,大大减少了代码的冗余度,提升了类的延展性
而委托这种特性,体现了类的封装的特性,非常有效的将接口与实现分离开来。
posted @ 2017-11-06 00:34  萌斗士  阅读(159)  评论(0编辑  收藏  举报