欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > C++:类的继承

C++:类的继承

2025/10/21 12:00:21 来源:https://blog.csdn.net/u011732210/article/details/143843904  浏览:    关键词:C++:类的继承

在C++中,类的继承是一种面向对象编程(OOP)的重要特性,它允许一个类(子类或派生类)继承另一个类(基类或父类)的属性和方法。通过继承,可以重用现有的代码,减少重复代码,提高代码的可维护性和扩展性。

1. 基本概念

  • 基类(Base Class 或 Parent Class):被继承的类。
  • 派生类(Derived Class 或 Child Class):从基类继承的类。

2. 继承的语法

在C++中,使用冒号 : 来表示继承关系,并指定继承方式。继承方式有三种:

  • 公有继承(public):基类的公有成员和保护成员在派生类中保持原来的访问级别。
  • 私有继承(private):基类的公有成员和保护成员在派生类中变为私有成员。
  • 保护继承(protected):基类的公有成员和保护成员在派生类中变为保护成员。
class DerivedClass : access_specifier BaseClass {// 派生类的成员
};

其中 access_specifier 可以是 public、private 或 protected。

3. 示例

假设我们有一个基类 Animal,它有一些基本的属性和方法。然后我们定义一个派生类 Dog,它继承自 Animal 并添加了一些新的特性和方法。

#include <iostream>
using namespace std;// 基类
class Animal {
protected:string name;int age;public:Animal(string n, int a) : name(n), age(a) {}void eat() const {cout << name << " is eating." << endl;}virtual void makeSound() const {cout << "Some generic animal sound" << endl;}virtual ~Animal() {}  // 虚析构函数,确保派生类的析构函数被正确调用
};// 派生类
class Dog : public Animal {
public:Dog(string n, int a) : Animal(n, a) {}void makeSound() const override {cout << name << " barks: Woof!" << endl;}void fetch() const {cout << name << " is fetching the ball." << endl;}
};int main() {Animal animal("Generic Animal", 5);Dog dog("Rex", 3);animal.eat();animal.makeSound();dog.eat();dog.makeSound();dog.fetch();return 0;
}
  • 解释
    • 基类 Animal
      包含两个受保护的成员变量 name 和 age。
      包含一个构造函数,用于初始化成员变量。
      包含一个 eat 方法和一个虚方法 makeSound。
      包含一个虚析构函数,确保派生类的析构函数被正确调用。
    • 派生类 Dog
      使用公有继承 public 继承自 Animal。
      包含一个构造函数,调用基类的构造函数来初始化继承的成员变量。
      重写了基类的 makeSound 方法,提供特定于狗的行为。
      添加了一个新的方法 fetch,这是狗特有的行为。
    • 主函数 main
      创建了一个 Animal 对象和一个 Dog 对象。
      调用 Animal 对象的方法,展示通用动物的行为。
      调用 Dog 对象的方法,展示狗的特定行为。
  • 重要概念
    • 虚函数(Virtual Function):
      在基类中声明为 virtual 的函数可以在派生类中被重写(覆盖)。当通过基类指针或引用调用虚函数时,实际调用的是派生类中的版本。
      虚析构函数确保派生类的析构函数被正确调用,防止资源泄漏。
    • 多态(Polymorphism):
      多态允许基类指针或引用来调用派生类的方法。这是通过虚函数实现的。
      例如,可以将 Dog 对象赋值给 Animal 类型的指针或引用,并调用 makeSound 方法,实际调用的是 Dog 类中的 makeSound 方法。
  • 运行结果:
    在这里插入图片描述

通过继承,可以构建层次化的类结构,提高代码的复用性和可维护性。类的继承是C++中实现代码复用和扩展的强大工具,但也需要仔细设计以避免复杂的继承关系和潜在的问题。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词