C++面向对象编程《2》--类和类之间的三大关系
复合(Composition)、委托(Delegation)、继承(Inheritance)
一、复合的形式:在A类中定义了一个B类的对象,然后A类的所有实现都通过B类的函数实现,类似于对B类成员函数的再次封装。具体的实例代码如下:
两者之间的关系:
二、委托:在A类中定义了一个指向B类的指针变量,A类中所需要的操作都在B类中进行声明和定义。这样做的好处是可以使得A类中的声明可以脱离于B类中的实现,B类实现无论如何改变都不会影响到A类,从而可以使客户端和后台分离。同时,这样做在编译时,只需要编译B类中的变化代码。(PIMPL(Private Implementation 或 Pointer to Implementation))
复合和委托的异同:
相同点:先构造函数和析构函数的调用顺序相同
不同点:
1、一个是普通变量,一个是指针变量。
2、复合时的两个类是同时创建的,而委托时的两个类是A类先生成,在A类需要调用到B类时,才会生成B类。
三、继承
继承就是子类可以通过三种模式(public、private、protected三种模式来继承父类中的成员函数与成员变量)。这一点想必不用多说。其中继承中的各种特性将会在下一节中记录。