【C++】继承 ② ( 继承语法 | 三种继承 - 共有继承 / 保护继承 / 私有继承 | 继承与父类私有成员 | 子类访问父类私有成员 | 代码示例 )

news2024/11/25 12:45:50

文章目录

  • 一、继承语法
    • 1、语法说明
    • 2、三种继承 - 共有继承 / 保护继承 / 私有继承
    • 3、继承与父类私有成员
    • 4、子类访问父类私有成员
  • 二、代码示例 - 继承语法





一、继承语法




1、语法说明


继承语法 : 使用 class 关键字 定义 子类 , 在 子类后面 使用 冒号 : 与 若干父类隔开 ;

class 子类名称 : 父类列表
{
	// 子类成员
};

父类列表格式 : 上述 " 父类列表 " 的格式如下 , 父类列表 由 若干父类组成 , 可以是 一个 , 也可以是 多个 ;

访问控制 父类名称 , 访问控制 父类名称 , ... , 访问控制 父类名称 ; 

2、三种继承 - 共有继承 / 保护继承 / 私有继承


访问控制符 : 访问控制符 用于 设置 继承的方式 ;

  • public : 公有继承
    • Child 类继承了 Parent 类的所有公有和保护成员 , 访问级别不变 , 并且可以访问它们 ;
    • Child 类不能继承 Parent 类的私有成员 ;
  • protected : 保护继承
    • Child 类继承了 Parent 类的所有公有和保护成员 , 这些成员会被声明为 保护成员 , 只能在类内部 或 子类中 访问它们 ;
    • Child 类不能继承 Parent 类的私有成员 ;
  • private : 私有继承
    • Child 类继承了 Parent 类的所有公有和保护成员 , 这些成员会被声明为私有的 , 只能在类内部访问它们 ;
    • Child 类不能继承 Parent 类的私有成员 ;

3、继承与父类私有成员


C++ 的 三种继承

  • 公有继承 public
  • 保护继承 protected
  • 私有继承 private

只针对 父类 的 " 公有成员 " 和 " 保护成员 " , 这两种成员是可以被继承的 ;


父类的 " 私有成员 " 是无法被子类 继承 和 访问 的 ; 父类的 私有成员 只能在 父类中 , 由父类自己的成员访问 ;

除 父类 之外的任何类 , 包括子类 , 都不能访问 父类的 私有成员 , 这是为了保护 类的 封装性 和 安全性 而制定的规则 ;


4、子类访问父类私有成员


子类 不能直接访问 父类的 私有成员 ,

但是可以通过在 父类 中提供 公有 或 保护 的 成员函数 来访问这些私有成员 ;

这些成员函数可以在子类中重写或复用 , 以便让子类能够访问和操作基类的私有成员 ;


如果在 子类 中 尝试访问 父类 的 私有成员 , 会报如下错误 :

Test.cpp(34,1): error C2248: “Parent::privateFun”: 无法访问 private 成员(在“Parent”类中声明)
Test.cpp(18): message : 参见“Parent::privateFun”的声明
Test.cpp(6): message : 参见“Parent”的声明

在这里插入图片描述





二、代码示例 - 继承语法



代码示例 :

#include "iostream"
using namespace std;

#include <iostream>  

class Parent {
public:
    void publicFun() {
        cout << "父类公有成员" << endl;
    }

protected:
    void protectedFun() {
        cout << "父类保护成员" << endl;
    }

private:
    void privateFun() {
        cout << "父类私有成员" << endl;
    }
};

// 子类 公有继承 父类
class Child : public Parent {
public:
    void publicFunChild() {
        // 子类 可以访问 父类 的公有成员 
        publicFun();   

        // 子类 可以访问 父类 的保护成员 
        protectedFun();

        // 任何类型的继承 都不能访问 父类的私有成员
        //privateFun();
    }
};

int main() {

    Child c;
    c.publicFunChild();

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
}

执行结果 :

父类公有成员
父类保护成员
Press any key to continue . . .

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Viewport的作用

什么是 Viewport? viewport 是用户网页的可视区域。 viewport 翻译为中文可以叫做"视区"。 手机浏览器是把页面放在一个虚拟的"窗口"&#xff08;viewport&#xff09;中&#xff0c;通常这个虚拟的"窗口"&#xff08;viewport&#xff09;比…

如何实现前端路由保护?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

C语言编写简易图书管理系统

这篇文章介绍了一个基本的图书管理系统的实现&#xff0c;它允许用户添加、插入、删除、修改、显示和查询图书的功能。该系统通过使用二进制文件将图书信息保存到磁盘&#xff0c;并且在程序启动时能够加载已保存的图书信息。 介绍 在计算机科学中&#xff0c;图书管理系统是…

buffer overflow detected

背景 在应用上云改造中&#xff0c;业务场景如下&#xff1a; 在使用ecs的场景中&#xff0c;应用的ip都是固定的&#xff1b;在使用k8s之后pod的ip就变的不固定了&#xff0c;k8s提供了statefulset的模式来支持这种场景&#xff0c;以固定域名的方式支持。 问题 在平台pod开…

Locust性能测试框架,从入门到精通

1. Locust简介 Locust是使用Python语言编写实现的开源性能测试工具&#xff0c;简洁、轻量、高效&#xff0c;并发机制基于gevent协程&#xff0c;可以实现单机模拟生成较高的并发压力。 主要特点如下&#xff1a; 使用普通的Python脚本用户测试场景分布式和可扩展&#xff…

论文阅读:ECAPA-TDNN

1. 提出ECAPA-TDNN架构 TDNN本质上是1维卷积&#xff0c;而且常常是1维膨胀卷积&#xff0c;这样的一种结构非常注重context&#xff0c;也就是上下文信息&#xff0c;具体而言&#xff0c;是在frame-level的变换中&#xff0c;更多地利用相邻frame的信息&#xff0c;甚至跳过…

用于医学图像分割的分段任意模型 (SAM)

一、说明 在不断发展的人工智能 (AI) 领域&#xff0c;医学成像是一个正在经历深刻变革的领域。乘着这一变革浪潮&#xff0c;Facebook 的&#xff08;现为 Meta&#xff09;研究小组开发了一种突破性的模型架构&#xff0c;称为 SegmentAnything (SAM)。SAM 的卓越之处在于它能…

队列:如何在线程池等有限资源池中的应用?

文章来源于极客时间前google工程师−王争专栏。 我们知道&#xff0c;CPU 资源是有限的&#xff0c;任务的处理速度与线程个数并不是线性正相关。相反&#xff0c;过多的线程反而会导致CPU频繁切换&#xff0c;处理性能下降。所以&#xff0c;线程池的大小一般都是综合考虑要处…

MTK6877/MT6877天玑900安卓5G核心板_安卓开发板主板定制开发

2021年5月13日&#xff0c;MediaTek 宣布发布旗下的天玑900系列芯片&#xff0c;又名MT6877。天玑900基于6nm先进工艺制造&#xff0c;搭载硬件级4K HDR视频录制引擎&#xff0c;支持1.08亿像素摄像头、5G双全网通和Wi-Fi 6连接、旗舰级存储规格和120Hz的FHD超高清分辨率显示&a…

GD32F10x系列单片机下载方式

GD32F10x系列单片机下载方式 简介烧录接口KEIL在线烧录选择下载器ST-link接线 DAP、JLINK等 烧录软件烧录STlink接线操作 ISP烧录接线 总结 简介 GD32F10x系列的单片机是兆易创新推出对标意法半导体STM32F10x系列的国产单片机。本文将以GD32F103C8T6展开&#xff0c;GD32F103C8…

持续提升信息安全运维保障服务能力,天玑科技助力企业快速实现数字化转型

近年来&#xff0c;以互联网、云计算、大数据、物联网为代表的新一代信息技术快速发展。给人们的生产生活方式带来方便的同时&#xff0c;也给信息系统的安全带来了严峻的挑战。我国信息化和信息安全保障工作的不断深入推进&#xff0c;以应急处理、风险评估、灾难恢复、系统测…

电动车租赁小程序开发方案详解php

电动车租赁小程序开发功能有哪些&#xff1f; 1.地图找车 进入小程序后&#xff0c;在地图上显示门店位置&#xff0c;点击位置可查看门店信息。进入门店后可以看到车辆列表&#xff0c;车辆里详细的介绍的车辆名称、图片、车辆介绍、租赁价格、押金等信息。 2.租赁/购车 电…

【LeetCode:1488. 避免洪水泛滥 | 有序表 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

十五、【历史记录画笔工具组】

文章目录 历史记录画笔工具历史记录艺术画笔工具 历史记录画笔工具 历史记录画笔工具很简单&#xff0c;就是将画笔工具嗯&#xff0c;涂抹过的修改过的地方&#xff0c;然后用历史记录画笔工具重新修改回来&#xff0c;比如我们将三叠美元中的一叠用画笔工具先涂抹掉&#xf…

CSS 边框

CSS 边框属性 CSS边框属性允许你指定一个元素边框的样式和颜色。 在四边都有边框 红色底部边框 圆角边框 左侧边框带宽度&#xff0c;颜色为蓝色 边框样式 边框样式属性指定要显示什么样的边界。 border-style属性用来定义边框的样式 border-style 值: none: 默认无边框…

防爆对讲机在消防救援工作中的重要性

据相关报道2022年国内因易燃易爆造成的事故825起&#xff0c;死亡1人以上的事故有103起&#xff0c;共造成234人死亡;火灾爆炸事故306起&#xff0c;占事故总数的37%&#xff0c;造成93人死亡&#xff0c;占死亡总人数的40%。 消防救援队伍在实施灭火作战、应急救援工作面对复杂…

新版Android Studio搜索不到Lombok以及无法安装Lombok插件的问题

前言 在最近新版本的Android Studio中&#xff0c;使用插件时&#xff0c;在插件市场无法找到Lombox Plugin&#xff0c;具体表现如下图所示&#xff1a; 1、操作步骤&#xff1a; &#xff08;1&#xff09;打开Android Studio->Settings->Plugins&#xff0c;搜索Lom…

Notepad++使用技巧

显示远程连接的文件目录 自动完成&#xff1a;函数自动提示 自动输入&#xff1a;输入一半括号自动补全另一半 自动关联 .pc文件识别为C 列模式 按住Alt不松手&#xff0c;可以直接范围选择&#xff0c;便于编辑选择的区域 关键行筛选 1.进入搜索页面的标记 2.选中标…

【C++】继承 ③ ( 继承的一些重要特性 | 子类拥有父类的所有成员 | 多态性 | 子类可以拥有父类没有的成员 | 代码示例 )

文章目录 一、继承的一些重要特性1、子类拥有父类的所有成员2、子类可以拥有父类没有的成员3、多态性 二、代码示例 一、继承的一些重要特性 1、子类拥有父类的所有成员 子类 继承 父类 , 则 子类 拥有 父类的 所有 成员变量 和 成员函数 ; 这里要注意 : 子类 拥有 父类的 私有…

海外代理高性价比推荐——精选list

做跨境电商的都明白&#xff0c;无论运营店铺还是社媒账号&#xff0c;都需要海外代理&#xff0c;而在市场上海外的代理很多&#xff0c;到底什么才是适合自己呢&#xff1f;下面我进行测评后整理列出了一份稳定&#xff0c;高性价比好用的几款海外代理。 1、IPFoxy全球代理I…