c++class继承(c++ 类 继承)
C++ 类继承
简介
类继承是一种面向对象编程中的机制,允许类从现有的类(称为基类)中衍生出新的类(称为派生类)。它使我们能够重用代码,增强代码的可扩展性和可维护性。
多级标题
派生类和基类
派生类:
从基类继承特征和行为的新类。
基类:
派生类的源类,为派生类提供特性和行为。
继承类型
C++ 中有四种继承类型:
公共继承:
派生类公开继承基类的所有成员(公开、保护和私有)。
保护继承:
派生类保护继承基类的所有成员(保护和私有),但派生类的派生类可以访问受保护的成员。
私有继承:
派生类私有继承基类的所有成员。派生类及其派生类都不能访问基类的任何成员。
虚继承:
用于避免菱形继承问题,这通常发生在多重继承中。
访问控制
public:
可以从派生类、基类和派生类的派生类中访问。
protected:
可以从派生类和派生类的派生类中访问,但不能从基类中访问。
private:
只能从派生类中访问。
重写和重载
重写:
派生类中的成员函数覆盖基类中具有相同签名的成员函数。
重载:
派生类中具有相同名称但不同签名的成员函数。
示例
下面的示例演示了公共继承:```cpp class Shape { public:virtual double area() = 0; // 纯虚函数 };class Rectangle : public Shape { public:Rectangle(double width, double height) : m_width(width), m_height(height) {}double area() override { return m_width
m_height; }private:double m_width;double m_height; };int main() {Rectangle rectangle(2.0, 3.0);cout << "Area of rectangle: " << rectangle.area() << endl;return 0; } ```
优点
代码重用:
避免重复编写公共代码。
可扩展性:
通过创建派生类,可以轻松扩展基类的功能。
可维护性:
更改基类时,派生类也会自动更新。
缺点
耦合度:
基类和派生类紧密耦合,更改基类可能会影响派生类。
菱形继承问题:
多重继承会导致菱形继承问题,这会带来歧义和潜在的错误。
**C++ 类继承****简介**类继承是一种面向对象编程中的机制,允许类从现有的类(称为基类)中衍生出新的类(称为派生类)。它使我们能够重用代码,增强代码的可扩展性和可维护性。**多级标题****派生类和基类*** **派生类:** 从基类继承特征和行为的新类。 * **基类:** 派生类的源类,为派生类提供特性和行为。**继承类型**C++ 中有四种继承类型:* **公共继承:** 派生类公开继承基类的所有成员(公开、保护和私有)。 * **保护继承:** 派生类保护继承基类的所有成员(保护和私有),但派生类的派生类可以访问受保护的成员。 * **私有继承:** 派生类私有继承基类的所有成员。派生类及其派生类都不能访问基类的任何成员。 * **虚继承:** 用于避免菱形继承问题,这通常发生在多重继承中。**访问控制*** **public:** 可以从派生类、基类和派生类的派生类中访问。 * **protected:** 可以从派生类和派生类的派生类中访问,但不能从基类中访问。 * **private:** 只能从派生类中访问。**重写和重载*** **重写:** 派生类中的成员函数覆盖基类中具有相同签名的成员函数。 * **重载:** 派生类中具有相同名称但不同签名的成员函数。**示例**下面的示例演示了公共继承:```cpp class Shape { public:virtual double area() = 0; // 纯虚函数 };class Rectangle : public Shape { public:Rectangle(double width, double height) : m_width(width), m_height(height) {}double area() override { return m_width * m_height; }private:double m_width;double m_height; };int main() {Rectangle rectangle(2.0, 3.0);cout << "Area of rectangle: " << rectangle.area() << endl;return 0; } ```**优点*** **代码重用:** 避免重复编写公共代码。 * **可扩展性:** 通过创建派生类,可以轻松扩展基类的功能。 * **可维护性:** 更改基类时,派生类也会自动更新。**缺点*** **耦合度:** 基类和派生类紧密耦合,更改基类可能会影响派生类。 * **菱形继承问题:** 多重继承会导致菱形继承问题,这会带来歧义和潜在的错误。