继承类型
当一个类派生自基类,该基类可以被继承为 public、protected 或 private 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。
我们几乎不使用 protected 或 private 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:
1. 公有继承(public):
当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
2. 保护继承(protected):
当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
3. 私有继承(private):
当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
多继承
多继承即一个子类可以有多个父类,它继承了多个父类的特性。
C++ 类可以从多个类继承成员,语法如下:
class :,,…{};
其中,访问修饰符继承方式是 public、protected 或 private 其中的一个,用来修饰每个基类,各个基类之间用逗号分隔,如上所示。现在让我们一起看看下面的实例:
#include using namespace std; // 基类 Shapeclass Shape { public: void setWidth(int w){ width = w; } void setHeight(int h){ height = h; } protected: int width; int height;}; // 基类 PaintCostclass PaintCost { public: int getCost(int area){ return area * 70; }}; // 派生类class Rectangle: public Shape, public PaintCost{ public: int getArea(){ return (width * height); }}; int main(void){ Rectangle Rect; int area; Rect.setWidth(5); Rect.setHeight(7); area = Rect.getArea(); // 输出对象的面积 cout // 输出总花费 cout return 0;}
当上面的代码被编译和执行时,它会产生下列结果:
Total area: 35Total paint cost: $2450
C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。
当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。
领取专属 10元无门槛券
私享最新 技术干货