【面试刷题】——C++公有继承保护继承和私有继承

在C++中,有三种继承方式:公有继承(public inheritance)、保护继承(protected inheritance)和私有继承(private inheritance)。这些继承方式决定了派生类如何继承基类的成员和访问权限。

公有继承(public inheritance):

公有继承是最常见的继承方式。

派生类继承了基类的公有成员和保护成员作为它自己的公有和保护成员,但不继承基类的私有成员。

公有继承中,基类的公有成员在派生类中仍然是公有的,可以通过派生类的对象访问。

基类的保护成员在派生类中变成了保护的,只能在派生类内部或者派生类的友元函数中访问。

cpp 复制代码
class Base {
public:
    int publicMember;
protected:
    int protectedMember;
private:
    int privateMember;
};

class Derived : public Base {
    // publicMember在Derived中仍然是公有的
    // protectedMember在Derived中变成了保护的
    // privateMember在Derived中无法访问
};

保护继承(protected inheritance):

保护继承继承了基类的公有和保护成员作为它自己的保护成员,但不继承基类的私有成员。

在保护继承中,基类的公有成员在派生类中变成了保护的,只能在派生类内部或者派生类的友元函数中访问。

基类的保护成员也在派生类中变成了保护的。

cpp 复制代码
class Base {
public:
    int publicMember;
protected:
    int protectedMember;
private:
    int privateMember;
};

class Derived : protected Base {
    // publicMember在Derived中变成了保护的
    // protectedMember在Derived中也是保护的
    // privateMember在Derived中无法访问
};

私有继承(private inheritance):

私有继承继承了基类的公有和保护成员作为它自己的私有成员,但不继承基类的私有成员。

在私有继承中,基类的所有成员在派生类中都变成了私有的,只能在派生类内部访问,不能在外部访问。

cpp 复制代码
class Base {
public:
    int publicMember;
protected:
    int protectedMember;
private:
    int privateMember;
};

class Derived : private Base {
    // publicMember在Derived中变成了私有的
    // protectedMember在Derived中也是私有的
    // privateMember在Derived中无法访问
};
相关推荐
007php0079 小时前
PHP与Java项目在服务器上的对接准备与过程
java·服务器·开发语言·分布式·面试·职场和发展·php
夏鹏今天学习了吗12 小时前
【LeetCode热题100(95/100)】寻找重复数
算法·leetcode·职场和发展
小丑西瓜66615 小时前
CMake基础用法,cmake_minimum_required,project,add_executable
linux·服务器·c++·camke
晚风吹长发16 小时前
初步了解Linux中的命名管道及简单应用和简单日志
linux·运维·服务器·开发语言·数据结构·c++·算法
fpcc16 小时前
设计心得——隔离隐藏的初步实践
c++
敲敲了个代码16 小时前
如何优化批量图片上传?队列机制+分片处理+断点续传三连击!(附源码)
前端·javascript·学习·职场和发展·node.js
C++ 老炮儿的技术栈16 小时前
不调用C++/C的字符串库函数,编写函数strcpy
c语言·开发语言·c++·windows·git·postman·visual studio
我尽力学16 小时前
面试 总结
java·spring boot·面试
fyzy16 小时前
C++写后端实现,实现前后端分离
开发语言·c++
Anastasiozzzz16 小时前
leetcode力扣hot100困难题--4.俩个正序数列的中位数
java·算法·leetcode·面试·职场和发展