私有继承、保护继承和公共继承区别

以下是C++中私有继承、保护继承和公共继承的基本区别,通过一个简单的代码段进行演示:

#include <iostream>

// 基类
class Base {
public:
    void publicFunction() {
        std::cout << "Public function in Base class." << std::endl;
    }

protected:
    void protectedFunction() {
        std::cout << "Protected function in Base class." << std::endl;
    }

private:
    void privateFunction() {
        std::cout << "Private function in Base class." << std::endl;
    }
};

// 公共继承
class DerivedPublic : public Base {
public:
    void derivedFunction() {
        // 可以访问基类的公有成员
        publicFunction();
        // 也可以访问基类的保护成员
        protectedFunction();
        // 不能访问基类的私有成员
        // privateFunction();  // Error
    }
};

// 保护继承
class DerivedProtected : protected Base {
public:
    void derivedFunction() {
        // 可以访问基类的公有成员
        publicFunction();
        // 也可以访问基类的保护成员
        protectedFunction();
        // 不能访问基类的私有成员
        // privateFunction();  // Error
    }
};

// 私有继承
class DerivedPrivate : private Base {
public:
    void derivedFunction() {
        // 可以访问基类的公有成员
        publicFunction();
        // 也可以访问基类的保护成员
        protectedFunction();
        // 不能访问基类的私有成员
        // privateFunction();  // Error
    }
};

int main() {
    DerivedPublic derivedPublicObj;
    derivedPublicObj.derivedFunction();  // 可以调用派生类的成员函数

    DerivedProtected derivedProtectedObj;
    // 在外部无法直接访问派生类的公有成员和保护成员
    // derivedProtectedObj.derivedFunction();  // Error

    DerivedPrivate derivedPrivateObj;
    // 在外部无法直接访问派生类的公有成员和保护成员
    // derivedPrivateObj.derivedFunction();  // Error

    return 0;
}

在这个例子中:

  • 公共继承: 派生类可以访问基类的公有和保护成员,但不能直接访问基类的私有成员。

  • 保护继承: 派生类可以访问基类的公有和保护成员,但在外部无法直接访问派生类的公有成员和保护成员。

  • 私有继承: 派生类可以访问基类的公有和保护成员,但在外部无法直接访问派生类的公有成员和保护成员。

这些区别反映了不同继承方式对派生类成员访问权限的影响。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值