C++面向对象编程《2》--类和类之间的三大关系

复合(Composition)、委托(Delegation)、继承(Inheritance)

 

一、复合的形式:在A类中定义了一个B类的对象,然后A类的所有实现都通过B类的函数实现,类似于对B类成员函数的再次封装。具体的实例代码如下:


C++面向对象编程《2》--类和类之间的三大关系

 

两者之间的关系:

  C++面向对象编程《2》--类和类之间的三大关系           

 

二、委托:在A类中定义了一个指向B类的指针变量,A类中所需要的操作都在B类中进行声明和定义。这样做的好处是可以使得A类中的声明可以脱离于B类中的实现,B类实现无论如何改变都不会影响到A类,从而可以使客户端和后台分离。同时,这样做在编译时,只需要编译B类中的变化代码。(PIMPL(Private Implementation 或 Pointer to Implementation))

C++面向对象编程《2》--类和类之间的三大关系

复合和委托的异同:

相同点:先构造函数和析构函数的调用顺序相同

不同点:

1、一个是普通变量,一个是指针变量。

2、复合时的两个类是同时创建的,而委托时的两个类是A类先生成,在A类需要调用到B类时,才会生成B类。

 

 

三、继承

继承就是子类可以通过三种模式(public、private、protected三种模式来继承父类中的成员函数与成员变量)。这一点想必不用多说。其中继承中的各种特性将会在下一节中记录。