• 【C++语言】继承


    继承(Inheritance)是面向对象编程(Object-Oriented Programming, OOP)中的一个重要概念,它允许一个类(称为子类或派生类)基于另一个类(称为父类或基类)来构建。在C++语言中,继承提供了一种重用已存在类的方法,并且允许在新的类中添加或修改成员,同时还能保留原有类的功能。本文将详细介绍C++中继承的概念、语法和一些示例代码。

    继承的基本概念

    在C++中,继承是通过关键字 class 后面的冒号 : 来实现的。在声明子类时,可以指定一个或多个父类,子类将会继承父类的成员。基类中的成员可以被子类访问,但是访问权限受到成员的访问修饰符的限制。

    继承的语法

    下面是继承在C++中的基本语法:

    class BaseClass {
    public:
        // BaseClass 成员和方法
    };
    
    class DerivedClass : access-specifier BaseClass {
    public:
        // DerivedClass 成员和方法
    };
    

    其中,access-specifier 是访问修饰符,可以是 publicprotectedprivate。这些修饰符决定了基类成员在子类中的访问权限。下面是这些修饰符的含义:

    • public:基类的公有成员在子类中仍然是公有的。
    • protected:基类的保护成员在子类中是受保护的,子类的对象和子类的成员函数可以访问它们,但是其他类不能。
    • private:基类的私有成员在子类中是不可访问的。

    示例代码

    让我们通过一个具体的例子来说明继承的用法:

    #include 
    using namespace std;
    
    // 基类
    class Animal {
    public:
        void eat() {
            cout << "Animal is eating." << endl;
        }
    
        void sleep() {
            cout << "Animal is sleeping." << endl;
        }
    };
    
    // 派生类
    class Dog : public Animal {
    public:
        void bark() {
            cout << "Dog is barking." << endl;
        }
    };
    
    int main() {
        Dog dog;
        dog.eat();  // 从基类继承的方法
        dog.sleep(); // 从基类继承的方法
        dog.bark(); // 派生类自己的方法
        return 0;
    }
    

    在这个例子中,Animal 是基类,Dog派生类Dog 继承了 Animaleat()sleep() 方法,并且还添加了自己的方法 bark()。在 main() 函数中,我们创建了一个 Dog 对象并调用了它的方法。

    多重继承

    C++还支持多重继承,即一个类可以同时继承多个父类。多重继承的语法和单继承类似,只需要在派生类的声明中列出多个父类即可。

    class DerivedClass : access-specifier BaseClass1, access-specifier BaseClass2 {
        // DerivedClass 的成员和方法
    };
    

    注意事项

    在使用继承时,需要注意以下几点:

    1. 访问权限:派生类对基类成员的访问权限受到基类中成员的访问修饰符限制。
    2. 构造函数和析构函数:派生类的构造函数应该调用基类的构造函数,以确保基类部分正确初始化。同样,派生类的析构函数应该释放派生类和基类所占用的资源。
    3. 虚函数:通过使用虚函数和多态性,可以实现运行时多态性,即在运行时根据对象的实际类型调用相应的方法。

    总结

    继承是C++中的重要概念,它允许我们在现有类的基础上构建新的类,并且可以通过多态性实现代码的灵活性和可扩展性。通过本文的介绍,希望读者能够更好地理解C++中继承的概念和用法,并能够灵活运用它们进行程序设计和开发。

  • 相关阅读:
    【云原生】HBase on k8s 编排部署讲解与实战操作
    SV-315C 15寸触模屏 I3工控机 网络广播主机
    多媒体应用设计师 第1章 多媒体基础基础
    【数据结构】时间复杂度_空间复杂度
    数据结构五分钟精通 之 正则表达式(Python)
    操作系统学习——第一类R/W问题和第二类R/W问题
    微信开发之一键踢出群聊的技术实现
    【C++学习】日期类和内存管理
    每个.NET开发都应掌握的C#特性(Attribute)知识点
    指定元素懒加载
  • 原文地址:https://blog.csdn.net/2301_76762420/article/details/138567502