C++笔记3--(Boolan)

C++面向对象

类对象之间三种关系:组合(Composition),继承(Inheritance),委托(Delegation)

组合,是“有一个”(has a)关系

Class A {

    ...

    };

Class B {

    A m;

    ...

    };

A有一个B,或者A包含一个B。例如动物园和猴子,可以说动物园有一只猴子。

类B的构造由内而外,先调用A的构造函数,然后是自己,析构由外而内。

继承,是“是一个”(is a)关系,有许多名称,包括派生,子类,扩展。

Class C:public A

{

  ...

  };

C是一个A。例如,动物园里还有其他动物,长颈鹿是一种动物,老虎是一种动物,它们的共性是动物的一般特征。

派生类可以在基类基础上添加功能,还可以完全替换和重写父类的行为,派生类还可以向从基类继承来的属性中添加新属性。

委托,包含有另一个类的指针。

Class D{

    A* mp;

    ...

  };

虚函数

Class Shape{

public:

    virtual void draw() const=0;  //纯虚函数,没有默认定义,子类一定要重新定义它。

    virtual void error(const std::string& msg);  //虚函数,对它有默认定义,子类可以重新定义它。

    int objectID() const;        //非虚函数,不希望子类重新定义它。

    ...

};

class Rectangle:public Shape{...};

class Ellipse:public Shape{...};

观察者模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。它还有两个别名,依赖(Dependents),发布-订阅(Publish-Subsrcibe)。可以举个博客订阅的例子,当博主发表新文章的时候,即博主状态发生了改变,那些订阅的读者就会收到通知,然后进行相应的动作,比如去看文章,或者收藏起来。博主与读者之间存在种一对多的依赖关系。


C++笔记3--(Boolan)_第1张图片

你可能感兴趣的:(C++笔记3--(Boolan))