C++ 派生类

C++ 派生类

在C++中,派生类是通过继承一个或多个已有的类(基类)来创建新类的机制。继承是面向对象编程的核心概念之一,它允许新创建的类(派生类)继承并扩展另一个类(基类)的属性和方法。派生类可以添加新的属性和方法,也可以重写(覆盖)基类中的方法,提供不同的实现。

基本概念

  • 基类(父类):被继承的类,派生类继承其属性和方法。
  • 派生类(子类):通过继承基类获得的新类。它继承了基类的公有和保护成员,并可以添加或覆盖成员函数。

基本语法

派生类的声明语法如下:

class DerivedClassName : accessSpecifier BaseClassName {
    // 类体
};
  • DerivedClassName:派生类的名称。
  • accessSpecifier:继承类型,决定了基类成员在派生类中的访问权限。可以是publicprotectedprivate
    • public继承:基类的公有成员和保护成员保持其原有的访问级别。
    • protected继承:基类的公有成员和保护成员在派生类中变为保护成员。
    • private继承:基类的公有成员和保护成员在派生类中变为私有成员。
  • BaseClassName:基类的名称。

继承类型的影响

  • 公有继承(public:最常见的继承方式,表示"是一个"关系。派生类的对象可以被视为基类的对象。
  • 保护继承(protected:较少使用,基类的公有和保护成员在派生类中成为保护成员。
  • 私有继承(private:表示"有一个"关系,基类的公有和保护成员在派生类中变为私有成员。

示例

class Base {
public:
    void show() {
        cout << "Base class show function" << endl;
    }
};

class Derived : public Base {
public:
    void show() {
        cout << "Derived class show function" << endl;
    }
};

在这个例子中,Derived类继承了Base类,并重写了show方法。当Derived类的对象调用show方法时,将调用Derived类中定义的版本。

多态和虚函数

C++支持通过基类指针或引用调用派生类的成员函数,这是通过虚函数(virtual)实现的,是实现多态的关键。如果基类中的函数被声明为virtual,派生类可以覆盖这个函数,以实现运行时多态。

class Base {
public:
    virtual void show() {
        cout << "Base class show function" << endl;
    }
};

class Derived : public Base {
public:
    void show() override { // 使用override确保函数匹配
        cout << "Derived class show function" << endl;
    }
};

在这种情况下,即使是通过基类的指针或引用调用show函数,实际调用的也是派生类中的版本,这就是多态的表现。

构造函数和析构函数

在派生类对象创建时,基类的构造函数会被自动调用,首先初始化基类部分,然后执行派生类的构造函数来初始化派生类新增的部分。析构的过程是相反的,先执行派生类的析构函数,再执行基类的析构函数。

总结

派生类是C++面向对象编程中的一个核心概念,它通过继承机制允许创建复杂的类层次结构,实现代码的重用和扩展。通过合理使用继承、多态和虚函数,可以设计出灵活且易于维护的程序。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YRr YRr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值