C++|C++(类的继承)

目录

总结
语法
继承类型
实例
总结 【C++|C++(类的继承)】1、多继承:一个子类可以有多个父类,继承了多个父类的特性;
2、继承类型有public、protected和private三种,继承时如果未使用访问修饰符,则默认为private;
3、一个派生类继承了所有的基类方法,但下列情况除外:

  • 基类的构造函数、析构函数和拷贝构造函数。
  • 基类的重载运算符。
  • 类的友元函数。
语法
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};
其中,访问修饰符继承方式是 public、protected 或 private 其中的一个,用来修饰每个基类,各个基类之间用逗号分隔
继承类型 采用不同的继承方式,基类成员在派生类中访问修饰符的变化:
表1. 基类成员在派生类中访问限制的变化
基类成员的访问修饰符 继承方式
public protected private
public public protected private
protected protected protected private
private 不可访问 不可访问 不可访问
具体:
  • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
  • 保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
  • 私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
实例
#include using namespace std; // 基类 Shape class Shape { public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // 基类 PaintCost class 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 << "Total area: " << Rect.getArea() << endl; // 输出总花费 cout << "Total paint cost: $" << Rect.getCost(area) << endl; return 0; }

输出:
Total area: 35
Total paint cost: $2450
参考资料:
https://www.runoob.com/cplusplus/cpp-inheritance.html

    推荐阅读