c 子类对象 访问父类对象受保护成员_C++日志(三十四)子类同名成员与作用域分辨符...
在继承中,如果子类新增成员和父类成员的名称相同,那么就需要辨别访问的是子类成员还是父类成员。
1、什么是作用域分辨符?
C++中,作用域分辨符由“::”表示,其作用是限定所访问成员所在的类。作用域标识符的使用语法如下:
类名
2、什么是隐藏规则?
对于具有包含关系的作用域:
- 如果内层和外层声明了同名标识符,那么外层标识符在内层中不可见,即隐藏规则;
- 如果内层没有声明和外层同名标识符,那么外层标识符在内层可见;
根据同名隐藏规则,子类声明和父类同名的成员时,将导致父类的成员被隐藏(子类声明的同名函数和父类同名函数参数表不同也被隐藏,即重载形式也被隐藏)。此时,则需要使用作用域标识符进行限定成员所属的父类。
3、子类使用作用域标识符访问父类成员
考虑一般的情况,即子类继承自父类,父类又继承自父类,即多级继承。此时,如果子类对象想要访问任一级父类的同名成员,则需要使用作用域标识符。
下面的例子中,类Z继承自类Y,类Y继承自类X,并且X、Y、Z三个类都含有同名函数成员get()和同名数据成员value:
class
现在,如果子类Z的对象想要访问X或者Y的同名成员函数,则需要使用作用域标识符,如下:
Z
4、使用using将一个作用域的标识符引入到另一个作用域
除去上述作用域标识符以外,子类还可以通过使用using引入父类的同名标识符。using最常用的情况是:子类新增同名函数和父类同名函数的参数不同时(即重载形式),子类对象可以直接通过参数表,告诉编译器需要访问的同名函数属于子类还是父类。
class
通过子类对象z调用get函数时,编译器根据参数形式不同,可以区分出调用的函数属于X还是属于Y。此时,get()和get(int)相当于子类重载的两个函数。
c 子类对象 访问父类对象受保护成员_C++日志(三十四)子类同名成员与作用域分辨符...相关推荐
- c 子类对象 访问父类对象受保护成员_面向对象三大特征: 继承
如果子类重写了父类的方法,子类对象又要使用父类的方法怎么办 继承 今日内容 所有的类都直接或者简洁的集成到了Object Object:祖宗类 概述 要定义的类属于已有类的一种时,可以将该类定义为已有 ...
- c 子类对象 访问父类对象受保护成员_看了这个,你就会搞对象了
今天我们来聊聊面向对象的一些事情. 什么是面向对象?简单的来讲,面向对象是一种程序设计的思想,一种分析和解决问题的方式.如果说世间每一个事物,都是一个独一无二的个体,那么这个个体就是一个对象--你的女 ...
- c 子类对象 访问父类对象受保护成员_06-JavaSe面向对象
一.static 1.它是一种修饰符 2.使用位置:它用来修饰成员变量和成员方法 static修饰成员变量,叫类变量: static修饰成员方法,叫类方法: 类成员=类变量+类方法 没有使用stati ...
- c 子类对象 访问父类对象受保护成员_面向对象编程(OOP)
这节讲一下,什么是面向对象(Object Oriented Programming).说面向对象之前,我们不得不提的是面向过程(Process Oriented Programming),C语言就是面 ...
- c 子类对象 访问父类对象受保护成员_java面向对象总结
前言:文章参考<java疯狂讲义>进行总结和归纳,知识要进行输出才算真正的有用. 在java的世界里,一切皆为对象,类是对对象的抽象,来一个例子:Person类 public 有了类,就可 ...
- c 子类对象 访问父类对象受保护成员_面向对象的三大特征
1.封装 封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 封装的好处: 良好的封装可以减少耦合. 类内部的实现可以自由修改. 类具有 ...
- C++之继承探究(五):子类对象作父类对象使用
前文:C++之继承探究(四):继承的使用 把子类对象当作父类对象使用 分三种情况: (1) 将子类对象赋值给父类对象. --把等号右边的子类对象,赋值给等号左边的父类对象时,仅仅是把子类中来 ...
- java如何中断父类方法_java – 如何测试调用父类的受保护(不需要)方法的方法?...
我陷入了一个非常奇怪的情况. 我有一些我需要测试的特定代码. 这里是: public class A { /* * The real method of real class is so big th ...
- c# 不可访问 因为它受保护级别限制
最近开始学习c#,编了一个程序就发现问题,不可访问 因为它受保护级别限制: 具体如下: 程序: using System; using System.Collections.Generic; usin ...
最新文章
- apache httpd 1
- 【Django】安装及配置
- 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始
- inotify监听文件夹的变动
- HDU多校3 - 6975 Forgiving Matching(多项式匹配字符串)
- SAP Spartacus的登录页面的用户名显示逻辑
- 虚拟机开启以后电脑非常卡_专主开VT电脑版手机安卓模拟器开启VT 模拟器开启VT 虚拟机打开VT...
- SpringBoot 使用注解实现消息广播功能
- linux-01-linux中的一些特殊符号
- 查看手册命令 Oracle,ORACLE 数据库常用日常维护命令手册
- 最短路径算法之四——SPFA算法
- python核心编程;可以帮你提高Python编程效率十条建议
- 自动与时间服务器时间同步,Windows系统时间同步(附时间同步服务器地址)
- 发那科机器人编程软件fanuc roboguide授权补丁_工业机器人离线编程与应用:ROBOGUIDE V8.3版本的工程文件创建...
- jxbrowser 6.18 以及 6.16 破解 整合
- Win32开发笔记(一):整体流程
- mtk android 关机充电,MTK充电开机关机过程
- DSS部署-12、DSS安装
- TXT文件编码格式解析
- 项目管理(如何做一个优秀的项目经理)
热门文章
- qt中Qtableview的用法
- Android中的Intent和Intent-filter总结
- kruskal算法java_克鲁斯卡尔算法(Kruskal)的java实现
- java反编译工具_ReverseTool逆向工具集合
- android 指示器平移动画,Android实现带指示器的自动轮播式ViewPager
- 自旋波matlab计算,[首藏作品](4865)从电子到磁振子,自旋波计算开启新篇章...
- java日期格式精确到分_详解Java日期格式化及其使用例子
- ldap seach java_从LDAP(Java)检索信息
- python全栈工程师薪资-Python全栈工程师为何这么火薪资这么高看了才知道
- java集合刷新面板_java Swing 中 面板刷新的问题。。求指教 。 高手在哪里啊。。。...