C++中的三种继承关系

先看类中声明成员时的三种访问权限

  • public : 可以被任意实体访问
  • protected : 只允许子类及本类的成员函数访问
  • private : 只允许本类的成员函数访问

在类继承时也是 public、protected 和 private 三种方式, 当成员的访问权限和继承相结合时,得到的就是C++中对成员的综合权限了。

声明类成员时的权限与继承时的权限组合后的结果:

基类中继承方式子类中对基类成员的访问权限 public public public public protected protected public private private protected public protected protected protected protected protected private private private public 子类无权访问 private protected 子类无权访问 private private 子类无权访问

由以上组合结果可以看出

1、public继承不改变基类成员的访问权限

2、private继承使得基类所有成员在子类中的访问权限变为private

3、protected继承将基类中public成员变为子类的protected成员,其它成员的访问 权限不变。

4、基类中的private成员不受继承方式的影响,子类永远无权访问。

在子类中恢复基类的访问权限

C++支持以两种方式实现该目的

  • 方法一,使用using 语句,这是C++标准建议使用的方式
  • 方法二,使用访问声明,形式为 base-class::member;, 位置在子类中适当的访问声明处。(注,只能恢复原有访问权限, 而不能提高或降低访问权限)

Original: https://www.cnblogs.com/fengbohello/p/6296406.html
Author: fengbohello
Title: C++中的三种继承关系

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535572/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【C++服务端技术】智能锁

    #pragma once #include namespace Extralib { namespace Thread { /* * 利用对象生存周期自动加解锁,比较安全 */ c…

    C++ 2023年5月29日
    047
  • C++/服务器开发4天实战训练营

    第一天: 1.四种不同的方式来实现add函数 //面向过程 int add1(int a, int b) { return a + b; } //面向对象 class ADD{ p…

    C++ 2023年5月29日
    043
  • c++ 条件变量

    http://blog.csdn.net/hemmanhui/article/details/4417433 互斥锁:用来上锁。 条件变量:用来等待,当条件变量用来自动阻塞一个线程…

    C++ 2023年5月29日
    042
  • C++11 static_assert

    1。assert是动态断言,运行期检查,影响性能,故debug版本检查,release关闭。 2。C++11中引入了static_assert这个关键字,用来做编译期间的断言,因此…

    C++ 2023年5月29日
    049
  • C/C++ 回调函数(Callback)& 函数指针

    摘要:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的…

    C++ 2023年5月29日
    053
  • CLion之C++框架篇-优化开源框架,引入curl,实现get方式获取资源(四)

    bash;collapse:true;;gutter:true; cmake_minimum_required(VERSION 3.11.2)</p> <p&gt…

    C++ 2023年5月29日
    060
  • 【转】C++右值引用和std::move

    《一文读懂C++右值引用和std::move》 それでも私の大好きな人 posted @2021-03-02 21:29 阿玛尼迪迪 阅读(86 ) 评论() 编辑 Origina…

    C++ 2023年5月29日
    059
  • C+++string类如何判断字符串为空

    string类是C++STL类之一,有很丰富的接口。 string类为空,实际也就是元素为0个。 可以按照如下方式判断: 1、string类有自己的成员函数empty, 可以用来判…

    C++ 2023年5月29日
    062
  • VC++之自定义消息

    用户可以自定义消息,在应用程序中主动发出,这种消息一般用于应用程序的某一部分内部处理。 实例说明: 当用户按键盘上的光标上移键时,程序发送用户自定义消息,在对应的消息响应函数中弹出…

    C++ 2023年5月29日
    061
  • C++ #ifndef/#define/#endif解释

    作用:防止头文件的重复包含和编译 ifndef x define x endif 比如说有一个头文件叫head.h,这是一个通用的头文件,然后我又定义了两个自己用的头文件,分别叫l…

    C++ 2023年5月29日
    041
  • vscode c++插件与配置

    1 本地运行 c/c++ –代码包 code runner –运行包 –C, C++, Java, JS, PHP, Python, Perl,…

    C++ 2023年5月29日
    082
  • C++解决share_ptr造成的循环引用

    参考链接:https://blog.csdn.net/yc2zgh1314/article/details/51264963 https://www.cnblogs.com/dua…

    C++ 2023年5月29日
    046
  • 【C++服务端技术】队列

    链表和锁实现的队列,锁的代码请看其他文章 #pragma once #include #include "AutoLock.h" namespace Extra…

    C++ 2023年5月29日
    048
  • 《转载》强大全面的C++框架和库推荐!

    关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库 C++标准库,包括了STL容器,算法…

    C++ 2023年5月29日
    066
  • Prim算法(二)之 C++详解

    普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法。 基本思想对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放…

    C++ 2023年5月29日
    053
  • EclipseC++学习笔记-1 环境搭建

    最近一个项目使用的EclipseC++编写的,所以需要搭建一个EclipseC++平台开发。1、windows下载https://www.eclipse.org/downloads…

    C++ 2023年5月29日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球