C++派生类对基类成员的访问

        派生类继承了基类的全部数据成员和除了构造、析构函数之外的全部成员函数,但是这些成员在派生类中的访问属性在派生类的过程中是可以调整的,继承方式控制了基类中具有的不同访问属性。
        基类的成员有公有(public)、保护(protected)和私有(private)三种访问属性,类的继承方式也有公有继承(public)、保护继承(protected)和私有继承(private)三种。不同的继承方式导致具有不同访问属性的基类成员在派生类中具有新的访问属性。
        注:(1)基类中的私有成员在派生类中是隐藏的,只能在基类内部访问。
        (2)派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。此时派生类对基类中各成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性,基类中公有成员和保护成员在派生类中的访问控制属性将随着继承方式而改变:①派生类从基类私有继承时,基类的公有成员保护成员在派生类中仍是公有成员;②派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;③派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。
        例1        分析下列程序是否正确

#include<iostream>
using namespace std;
class Point
{
private:int x, y;
public:void InPoint(int x, int y) { this->x = x; this->y = y; }void Move(int x, int y) { this->x += x; this->y += y; }int  Getx() { return x; }int Gety() { return y; }
};
class Rectangle :public Point
{
private:int w, h;
public:void InRectangle(int x, int y, int w, int h) { InPoint(x, y); this->w = w; this->h = h; }int Getw() { return w; }int Geth() { return h; }
};
int main()
{Rectangle r;r.InRectangle(2, 3, 10, 20);r.Move(3, 2);cout << r.Getx() << "." << r.Gety() << "." << r.Getw() << "." << r.Geth() << endl;return 0;
}

        程序运行正确。
        派生类虽然无法直接调用基类的私有成员但可以间接调用。 
        例2        分析下列程序是否正确

#include<iostream>
using namespace std;
class Base
{
protected:int data;
};
class Dervied :public Base
{
public:void fun() { data = 1; }
};
int main()
{Base objb;Dervied objd;objb.data = 2;objd.fun();return 0;
}

        在这里会报错。因为data是保护成员无法直接访问。但在派生类中可以访问公有成员和私有成员。

 

参考《全国计算机等级考试二级教程——C++语言程序设计》

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

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

相关文章

项目实用linux 操作详解-轻松玩转linux

我之前写过完整的linux系统详解介绍&#xff1a; LInux操作详解一&#xff1a;vmware安装linux系统以及网络配置 LInux操作详解二&#xff1a;linux的目录结构 LInux操作详解三&#xff1a;linux实际操作及远程登录 LInux操作详解四&#xff1a;linux的vi和vim编辑器 LInux操作…

VPN以及GRE和MGRE

VPN VPN — 是虚拟专用网络 通俗地说&#xff0c;就是通过虚拟的手段&#xff0c;将两个独立的网络&#xff0c;穿越一个公共网络进行连接&#xff0c;实现点到点专线的效果&#xff08;可以理解为&#xff1a;一个分公司通过公网和总公司建立点到点的专线连接&#xff09; 现…

数据库理论基础

1.什么是数据库 1.1数据 描述事物的符号记录&#xff0c; 可以是数字、 文字、图形、图像、声音、语言等&#xff0c;数据有多种形式&#xff0c;它们都可以经过数字化后存入计算机。 1.2数据库 存储数据的仓库&#xff0c;是长期存放在计算机内、有组织、可共享的大量数据…

【05】LLaMA-Factory微调大模型——初尝微调模型

上文【04】LLaMA-Factory微调大模型——数据准备介绍了如何准备指令监督微调数据&#xff0c;为后续的微调模型提供高质量、格式规范的数据支撑。本文将正式进入模型微调阶段&#xff0c;构建法律垂直应用大模型。 一、硬件依赖 LLaMA-Factory框架对硬件和软件的依赖可见以下…

第二题(卡码网周赛第二十六期(23年阿里淘天笔试真题))

题目链接 第二题&#xff08;卡码网周赛第二十六期&#xff08;23年阿里淘天笔试真题&#xff09;&#xff09; 题目描述 讨厌鬼有一个长度为 n &#xff08;1 < n < 10^5&#xff09;的数组&#xff0c;他想知道这个数组有多少个子序列是一个排列? 子序列的定义: 数组…

Redis高级篇—分布式缓存

目录 Redis持久化 RDB持久化 AOF持久化 RDB与AOF对比 Redis主从 全量同步 增量同步 Redis哨兵 RedisTemplate集成哨兵实现 Redis分片集群 散列插槽 集群伸缩 故障转移 自动故障转移 手动故障转移 RedisTemplate访问分片集群 Redis持久化 RDB持久化 RDB全称Re…

Mojo 编程语言简介

Mojo 是一种新兴的编程语言&#xff0c;旨在结合 Python 的易用性与 C 的高性能&#xff0c;特别是面向高性能计算、机器学习和系统编程等领域。Mojo 的设计目标是提供一种既具备高级语言灵活性&#xff0c;又能够高效运行的编程工具。 主要特性 高性能&#xff1a;通过高级编…

Alpine Linux 轻量级Linux 适合于 docker 容器镜像

Alpine Linux是创始于2010年4月及以前的、一款开源社区开发的、基于musl libc和BusyBox的轻量级Linux发行版&#xff1b;适合用来做路由器、防火墙、VPNs、VoIP 盒子以及服务器的操作系统。 Alpine 的意思是“高山的”。Alpine Linux 围绕 musl libc 和 busybox 构建。这使得它…

cephrgw lifecycle理解

相关lc链接&#xff1a;rgw&#xff1a;lifecycle功能理解_ceph rgw lifecycle-CSDN博客 相关gc链接&#xff1a;RGW 的GC深入解析与调优-腾讯云开发者社区-腾讯云 每个rgw实例有rgw_lc_max_worker个worker (默认为3)来做lifecycle RGWLC::LCWorker::entry()-> RGWLC::pro…

LockSupport详解

目录 LockSupport详解1、LockSupport简介LockSupport 类的构造方法LockSupport 类的属性Thread类的parkBlocker属性LockSupport 类的常用方法挂起线程的相关方法唤醒线程的相关方法unpark(Thread thread)方法注意点LockSupport使用示例判断park的条件建议使用while而不是if引出…

算法篇 滑动窗口 leetCode 水果成篮

水果成蓝 1.题目描述2.图形分析2.1原理解释2.2 怎么想出使用滑动窗口2.3 图形分析 3.代码演示 1.题目描述 2.图形分析 2.1原理解释 2.2 怎么想出使用滑动窗口 2.3 图形分析 3.代码演示

学艺不精产生大坑-----vue 的v-else 和v-if控制多个组件的显隐,但是同时显示了

项目场景&#xff1a; 项目场景&#xff1a;在一个文件里通过v-else 和v-if控制多个组件的显隐 问题描述 明明满足了v-if的条件还是会自动执行v-else的&#xff0c;让两个组件同时显示了 <div v-if"busId 1"><taskApproval></taskApproval><…

Android 10.0 Launcher3拖拽图标进入hotseat自适应布局功能实现一

1.前言 在10.0的系统rom定制化开发中&#xff0c;在对于launcher3的一些开发定制中&#xff0c;在对hotseat的一些开发中&#xff0c;需要实现动态hotseat居中 的功能&#xff0c;就是在拖拽图标进入和拖出hotseat&#xff0c;都可以保持hotseat居中的功能&#xff0c;接下来分…

【Linux】基础I/O——理解ext2文件系统

我们到现在为止讲的都是打开的文件。现在我们讲讲没有打开的文件 如果一个文件没有被打开&#xff0c;那它就是在磁盘中被存储的&#xff0c;我们就要关心路径问题&#xff0c;存储问题&#xff0c;文件获取问题&#xff0c;那么操作系统是怎么处理这些问题的&#xff1f;不急…

配置SMTP服务器的要点是什么?有哪些限制?

配置SMTP服务器安全性如何保障&#xff1f;如何高效配置服务器&#xff1f; SMTP作为电子邮件发送的核心协议&#xff0c;其配置对于确保邮件的成功传递和安全至关重要。AokSend将详细介绍配置SMTP服务器的关键要点&#xff0c;帮助读者建立一个高效、安全的邮件发送系统。 配…

使用 Flask 3 搭建问答平台(三):注册页面模板渲染

前言 前端文件下载 链接https://pan.baidu.com/s/1Ju5hhhhy5pcUMM7VS3S5YA?pwd6666%C2%A0 知识点 1. 在路由中渲染前端页面 2. 使用 JinJa 2 模板实现前端代码复用 一、auth.py from flask import render_templatebp.route(/register, methods[GET]) def register():re…

swift小知识点

1、 如果你需要接收用户的输入可以使用 readLine(): let theInput readLine() 2、 类型别名对当前的类型定义了另一个名字&#xff0c;类型别名通过使用 typealias 关键字来定义。语法格式如下&#xff1a; typealias newname type 例如以下定义了 Int 的类型别名为 Fe…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署Hallo :针对肖像图像动画的分层音频驱动视觉合成

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 本文目标&#xff1a;在Ubuntu系统上部署Hallo&#x…

Python面试宝典第15题:岛屿数量

题目 在二维网格地图上&#xff0c;1 表示陆地&#xff0c;0 表示水域。如果相邻的陆地可以水平或垂直连接&#xff0c;则它们属于同一块岛屿。请进行编码&#xff0c;统计地图上的岛屿数量。比如&#xff1a;下面的二维网格地图&#xff0c;其岛屿数量为3。 基础知识 解决这类…

国产化低功耗HDMI转VGA方案,大量出货产品,广泛应用在显示器以及广告机产品

芯片描述&#xff1a; 兼具高性能和低成本效益的优点&#xff0c;是一款可以将高清视频 HDMI1.4 数字信号转换成 VGA 模拟信号输出的芯片。不需要提供外部电源&#xff0c;ICNM7301 就可以在正常模式下使用&#xff1b;ICNM7301 广 泛适用于各种市场系统和显示应用体系&#x…