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; } ```**优点*** **代码重用:** 避免重复编写公共代码。 * **可扩展性:** 通过创建派生类,可以轻松扩展基类的功能。 * **可维护性:** 更改基类时,派生类也会自动更新。**缺点*** **耦合度:** 基类和派生类紧密耦合,更改基类可能会影响派生类。 * **菱形继承问题:** 多重继承会导致菱形继承问题,这会带来歧义和潜在的错误。

标签列表