当前位置: 首页 > news >正文

C++ //练习 18.28 已知存在如下的继承体系,在VMI类的内部哪些继承而来的成员无须前缀限定符就能直接访问?哪些必须有限定符才能访问?说明你的原因。

C++ Primer(第5版) 练习 18.28

练习 18.28 已知存在如下的继承体系,在VMI类的内部哪些继承而来的成员无须前缀限定符就能直接访问?哪些必须有限定符才能访问?说明你的原因。

struct Base{void bar(int);			//默认情况下是公有的
protected:int ival;
};
struct Derived1: virtual public Base{void bar(char);			//默认情况下是公有的void foo(char);
protected:char cval;
};
struct Derived2: virtual public Base{void foo(int);			//默认情况下是公有的
protected:int ival;char cval;
};
class VMI: public Derived1, public Derived2 {};
环境:Linux Ubuntu(云服务器)
工具:vim

 

解释
  • 无需限定符即可访问:
    方法:bar(int)(来自 Base)、bar(char)(来自 Derived1)、foo(char)(来自 Derived1)、foo(int)(来自 Derived2)。
    成员:ival(来自 Base)、cval(来自 Derived1)、cval(来自 Derived2)。

  • 必须使用限定符访问:
    ival(来自 Derived2):因为 ival 存在于 Base 和 Derived2 中,并且 Derived2 版本隐藏了 Base 版本。要解决这种歧义,需要使用限定符。


http://www.mrgr.cn/news/3950.html

相关文章:

  • AIGC 与 ChatGPT 的区别与联系
  • 使用 Python 绘制词云图的详细教程
  • JetBrains CLion 2024.2 (macOS, Linux, Windows) - C 和 C++ 跨平台 IDE
  • 【前端学习】搭建Vue项目
  • 如何为您的专用IP地址选择正确的IP SSL证书
  • 【三维语义分割模型】PAConv
  • 机械学习—零基础学习日志(如何理解概率论4)
  • Java笔试面试题AI答之线程(3)
  • DN专业3D图形制作软件win/mac软件安装下载(附下载链接)
  • Go 语言切片(Slice)
  • 【Datawhale AI 夏令营】第四期 基于2B源大模型 微调
  • Spring Boot应用的数据库连接池管理
  • (十)Table API 和 SQL 基本概念
  • etcd启动和测试
  • 【时间序列预测_python_jupyter】使用neuralforecast包在jupyter-lab上预测并绘图
  • 环境配置1-MobaXterm服务器中Anaconda、Pytorch的安装
  • 作业8/16
  • JavaEE 的相关知识点(一)
  • API网关之Apache ShenYu
  • 每日掌握一个科研插图·2D密度图|24-08-21