C++继承基类的数据成员与成员函数

在C++中,继承是面向对象编程的一个核心概念,它允许一个类(称为派生类或子类)继承另一个类(称为基类或父类)的属性和方法。通过继承,派生类可以复用基类的代码,同时添加新的属性和方法或重写基类的方法。

基类的数据成员与成员函数

基类可以包含数据成员(属性)和成员函数(方法)。数据成员用于存储对象的状态,而成员函数则定义了对象可以执行的操作。

派生类中的数据成员与成员函数

数据成员:
派生类可以定义自己的数据成员,这些成员与基类的数据成员是独立的。
派生类还可以访问基类的公有(public)和保护(protected)数据成员(如果继承方式是公有或保护继承)。然而,基类的私有(private)数据成员在派生类中是不可访问的。
成员函数:
派生类可以定义自己的成员函数。
派生类可以访问基类的公有和保护成员函数。但是,基类的私有成员函数在派生类中是不可访问的。
派生类可以重写(override)基类的虚函数(virtual function)。虚函数允许派生类提供基类函数的具体实现。

继承中的访问权限

继承方式(公有、保护或私有)决定了基类成员在派生类中的访问权限:

公有继承:基类的公有成员在派生类中仍然是公有的,保护成员仍然是保护的,私有成员仍然是私有的(即不可访问)。
保护继承:基类的公有成员在派生类中变为保护的,保护成员仍然是保护的,私有成员仍然是私有的。
私有继承:基类的公有和保护成员在派生类中均变为私有的,私有成员仍然是私有的。
示例

#include <iostream>  
using namespace std;  
  
// 基类  
class Base {  
public:  
    int publicBaseMember;  
protected:  
    int protectedBaseMember;  
private:  
    int privateBaseMember;  
  
public:  
    void baseFunction() {  
        cout << "Base function" << endl;  
    }  
  
protected:  
    void protectedFunction() {  
        cout << "Protected function" << endl;  
    }  
  
private:  
    void privateFunction() {  
        cout << "Private function" << endl;  
    }  
};  
  
// 派生类  
class Derived : public Base {  
public:  
    int derivedMember;  
  
    void accessBaseMembers() {  
        publicBaseMember = 10;          // 可以访问  
        protectedBaseMember = 20;       // 可以访问  
        // privateBaseMember = 30;      // 不可访问  
  
        baseFunction();                 // 可以调用  
        protectedFunction();            // 可以调用,但在这里没有直接调用以展示  
        // privateFunction();           // 不可调用  
    }  
  
    void derivedFunction() {  
        cout << "Derived function" << endl;  
    }  
};  
  
int main() {  
    Derived d;  
    d.publicBaseMember = 5;             // 可以通过派生类对象访问基类公有成员  
    // d.protectedBaseMember = 15;      // 不可通过派生类对象直接访问保护成员  
    // d.privateBaseMember = 25;        // 不可通过派生类对象访问基类私有成员  
  
    d.baseFunction();                   // 可以调用基类公有成员函数  
    // d.protectedFunction();           // 不可调用基类保护成员函数(除非在派生类中有访问路径)  
    // d.privateFunction();             // 不可调用基类私有成员函数  
  
    d.derivedFunction();                // 可以调用派生类成员函数  
  
    d.accessBaseMembers();
    return 0;  
}

在这个例子中,Derived 类从 Base 类公有继承。因此,Derived 类可以访问 Base 类的公有和保护成员,但不能访问私有成员。此外,Derived 类还定义了自己的数据成员 derivedMember 和成员函数 derivedFunction。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值