【面试刷题】——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中无法访问
};
相关推荐
一拳一个呆瓜13 分钟前
【STL】iostream 编程:缓冲区的作用
c++·stl
凯瑟琳.奥古斯特1 小时前
力扣1012数位DP解法详解
开发语言·c++·算法·leetcode·职场和发展
chh5632 小时前
C++--string
java·开发语言·网络·c++·学习
J_yyy2 小时前
基于Reactor的文件管理服务开发笔记
c++·笔记·reactor·多线程编程·muduo
SamDeepThinking2 小时前
为什么很多人学了Java,还是没真正理解类和对象?
java·后端·面试
阿新聊ai2 小时前
Claude Code 为什么总不懂你的项目?缺一张「项目地图」
前端·后端·面试
李小小钦3 小时前
D. Storming Arasaka(Codeforces 2238)
c语言·开发语言·数据结构·c++·算法
卷无止境3 小时前
SFML 深度解读:一个教科书级 C++ 多媒体库的内功心法
c++·后端
用户852495071843 小时前
Promise 全解析:从三状态到 Promise.all
面试
嘟嘟07173 小时前
Node.js spawn 实现迷你 Cursor 自动化终端|子进程完整解析
前端·后端·面试