基类在派生类中访问属性的调整

简介: 基类在派生类中访问属性的调整

目录

前言

同名成员的相关知识

访问声明

数据成员可使用访问声明

访问声明只含没有类型和参数的函数名和变量名

小结


前言

在上一次我们讲解的派生类和析构函数间的构造规则,下面我们将会讲述的是基类成员在派生类中的访问属性的其他方式以及同名函数的概念等等

同名成员的相关知识

在C++中,他是允许在派生类中声明成员是与基类中成员的名字相同,换句话来说,派生类可以重新声明与基类成员中相同名字的成员,但是如果在没有虚函数的情况下,在派生类中定义了乙基类成员同名的成员,那么此时的派生类成员就会覆盖激烈中的同一成员,在派生类中,如果这个名字的使用就意味着访问在派生类中重新声明的成员

下面来展示一个程序片段就可以说明上面的要点了

class A {
public:
  int f();
};
class B :public A {
public:
  int f();
  int g();
};
int B::g() {
  f();
  B::f();   //表示访问派生类中的f(),即调用的函数是B::f();
  return 0;
}

在私有继承的情况之下,为了保证基类中的一部分成员函数在派生类中也是存在的,所以必须要在派生类中重新再次定义同名的成员。在C++面向对象程序设计中,如果要在派生类中对基类所继承过来的东西的某些函数的功能进行,更进一步的扩充和改造都可以通过以上的方式覆盖来实现这种覆盖的方法,这就是对基类成员改造的至关重要的手段,是程序设计中程序员们经常使用的方法之一。

访问声明

在之前的程序之中,我们已经说过对于公有继承,在基类中的公有成员函数,也就是派生类中的公有成员,函数继承说明外界可以用派生类中的对象来调用基类中原有的公有成员函数,但是对于私有继承在基类中的公用函数就会变成派生类中的私有成员函数,在这个时候,外界就会无法利用派生类中的对象直接对基类中的成员函数来进行调用和访问,而只能通过调用派生类中的成员函数,实现间接的调用基类中的成员函数

数据成员可使用访问声明

class A {
public:
  int a1;
private:
};
class B :private A {
public:
  A::a1;
private:
};

访问声明只含没有类型和参数的函数名和变量名

如果将上面的访问声明写成如下:

void A::show;
A::show();
void A::show();
都是不对的

小结

1、访问声明是不能够改变成员在所属基类中的访问属性,换句话来说,访问声明只能够将原基类中的保护成员变为私有派生类中的保护成员,但是把原基类中的公有成员变为私有派生类中的公有成员,但是对基类中的私有成员仍不能使用访问声明

2、关于基类中的重载函数名,在访问声明时,将对基类中一切的同名函数都有着作用,这将意味着重载函数在使用访问声明的过程中,一定要非常的谨慎

相关文章
|
Android开发 开发者
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
430 1
|
12月前
|
安全 C++ 开发者
C++ 11新特性之shared_ptr
C++ 11新特性之shared_ptr
182 0
|
消息中间件 安全 Apache
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
327 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
|
JSON 安全 API
淘宝订单接口对接实战:从申请到代码实现的全流程
随着电子商务的飞速发展,订单管理已成为电商生态中的核心环节。为了更高效地进行订单管理,许多商家选择通过API接口与外部系统进行数据交互。本文以淘宝订单接口为例,详细介绍如何从申请到代码实现,成功对接淘宝订单接口。
(详细图解过程) IDEA在创建类的的时候自动生成作者信息、时间等信息
这篇文章介绍了如何在IntelliJ IDEA中设置文件和代码模板,以便在创建新类时自动生成包含作者信息、日期和时间等信息的文件头。
(详细图解过程) IDEA在创建类的的时候自动生成作者信息、时间等信息
|
数据采集 数据可视化 数据挖掘
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
本文介绍了一个基于Python和Django框架,使用Scrapy进行去哪儿网数据采集与分析的项目,包括实现登录注册功能、MD5加密以及通过可视化大屏展示分析结果的综合系统。
186 1
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
|
Windows
Grandle安装配置(8.2.1)-windows环境
Grandle安装配置(8.2.1)-windows环境
433 2
|
消息中间件 Prometheus 监控
Producer的监控与日志记录最佳实践
【8月更文第29天】在分布式系统中,消息队列作为关键组件之一,其稳定性和性能至关重要。生产者(Producer)负责生成并发送消息到消息队列中,因此确保生产者的健康运行是非常重要的。本文将探讨如何为生产者设置监控和日志记录,以跟踪其健康状况和性能指标。
207 1
|
12月前
|
IDE 编译器 开发工具
Cython 模块之间的相互导入,组织你的 Cython 代码
Cython 模块之间的相互导入,组织你的 Cython 代码
182 0
|
存储 SQL NoSQL
深入理解数据库管理系统(DBMS)及其在现代应用中的重要性
一、引言 随着信息技术的飞速发展,数据已成为现代社会中不可或缺的资源
1422 3

热门文章

最新文章