C++:隐藏规则背后的基本原理

2023-12-11

背后的理由是什么隐藏规则 in C++?

class A { void f(int); }
class B : public A { void f(double); } // B::f(int) is hidden
  • 如果这是一个有意义的功能,我认为也应该可以隐藏函数而无需定义具有相同名称的新函数:如下所示:

     class B : public A { hide void f(double); }
    

但这是不可能的。

  • 我不认为它简化了编译器的工作,因为编译器无论如何都必须能够unhide当您显式使用函数时using指示:

     class B : public A { using A::f; void f(double); } // B::f(int) NOT hidden
    

那么,怎么会有隐藏规则呢?


这是一个棘手的问题,但显然这个想法是,这种隐藏功能有助于避免在更改基类时出现微妙的错误(否则可能会“窃取”之前由派生类处理的调用)。基类的更改仍然会影响派生类的编译结果,所以我认为我不能 100% 理解这个解释。

我同意这个话题被如此频繁地讨论,以至于隐藏实际上可能增加了 C++ 程序员的“惊喜”数量。

关于这个问题的详细讨论可以找到here...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:隐藏规则背后的基本原理 的相关文章

  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用

    我正在尝试将我的项目从 UseMVC asp net core 2 2 兼容样式 升级到 UseEndpoint Routing 并且我的所有请求都被重定向到我的验证失败页面 它与声明有关 如果我删除 Authorize Roles Adm
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • NetBeans功能如何关闭

    我已经安装了 NetBeans 15 他们默认打开了一个功能 我觉得这个功能非常分散注意力 我该如何关闭它 它是下图中突出显示的代码 这是不可编辑的额外文本 对我来说只是妨碍 先感谢您 感谢一位同事找到了答案 关闭下面的 显示内联提示
  • R 中不同颜色组合的堆积条形图

    我需要从表单的数据创建一个堆积条形图c a b a 和 b 由 c 标准化 使得 a 和 b 加起来为 1 我拥有的数据需要特定的格式 因此 a 和 b 需要是列表 下面是给定这些特定格式的最简单的可重现示例 A list 2 1 1 2
  • 是否需要构建 boost.signals2 库?

    我的系统在构建 boost 库时遇到问题 我知道大多数 boost 库 幸运的是 只是不需要构建的标头 有一些例外 是否需要构建 boost signals2 库 boost signals2 库也依赖于 boost signals 库吗
  • 使用 C 解析 URL 的最佳方法?

    我有一个像这样的网址 http 192 168 0 1 8080 servlet rece 我想解析 URL 来获取值 IP 192 168 0 1 Port 8080 page servlet rece 我怎么做 就我个人而言 我偷了HT
  • 除了在每次闭包之前克隆它之外,还有其他选择在多个闭包中共享 Arc 吗?

    我有这样的事情 use std sync Arc fn main let arc Arc new 42 move arc clone move arc clone 我正进入 状态 error E0382 capture of moved v
  • 如何实现标签系统

    我想知道实现标签系统的最佳方法是什么 就像 SO 上使用的那样 我正在考虑这个问题 但我无法想出一个好的可扩展解决方案 我正在考虑有一个基本的 3 表解决方案 有一个tags桌子 一个articles桌子和一个tag to articles
  • number_in_month 练习(SML 中多个列表的迭代)

    我在 SML 中有两个列表 假设列表 A a b c d e f 和列表B b e 我想计算 B 中每个项目与 A 中每个三元组的第二个元素匹配的次数 输出应该是 2 因为b and e每个在 A 中出现一次 到目前为止 这是我的代码 但是
  • Blogger 主题的下一个和上一个按钮

    这可能需要花费很多时间 并且可能是一个很难回答的问题 但请帮忙 我有一个博主博客 这是一个阅读日本漫画的博客 这个博客的主题实际上是在未完全开发的情况下发布的 我下载并应用了它 尽管我几乎完成了必要的地方的编码 但仍然遗漏了一些问题 其中一
  • 如何在不使用数据透视的情况下在 SQL 中将行转换或转置为列?

    我在 SQL 中转置数据时遇到一个问题 例如下面给出的表格 id source name value 1 cp x 1 cp y 1 hi a 2 li b 2 cp c 2 li d 3 li e 我需要以下格式的表格 转置但带有字符串聚
  • 通过 XML 文件*和*代码配置 log4net 附加程序

    我今天开始使用 log4net 到目前为止 我真的很喜欢它 为了保留我们当前的日志记录功能 应用程序需要在应用程序启动时创建一个新的日志文件 日志文件名中包含编码的日期和时间戳 目前 我已经通过以下方式配置了 log4netXmlConfi
  • 带大括号的正则表达式

    我有以下字符串 blabla blabla xyzxyz blabla 什么是正确的正则表达式匹配模式来分隔大括号中的内容并将其放入数组中 我正在使用 RegExKitLite 和 Objective C 我将非常感谢你的帮助 好的 我刚刚
  • 调用返回相同类型且与类型本身相同名称的变量的静态方法时,“变量 xxx 可能尚未初始化”

    为什么会失败并出现如下所示的错误 我不确定在 JLS 中哪里可以找到执行此类操作的限制 public class A static A foo return null public static void main String args
  • BeautifulSoup4 stripped_strings 给我字节对象?

    我试图从块引用中取出文本 如下所示 blockquote class postcontent restore 01 Oyasumi br 02 DanSin br 03 w t s br 04 Lovism br 05 NoName br
  • 系统V ABI的红区是如何实现的

    编译器如何确保红色区域不被破坏 是否存在空间过度分配的情况 是什么因素导致选择128字节作为红色区域的大小 编译器不会 它只是利用担保的RSP 以下的空间不会异步地被破坏 例如被信号处理程序破坏 进行函数调用当然会同步破坏它 事实上 在Li
  • 如何使用ggplot2的x轴日期注释?

    我在理解之间的区别时遇到问题geom segment and annotate segment 当涉及到带有日期的绘图时x axis 让我们从一些随机数据开始 library data table library lubridate lib
  • 如何垂直居中对齐未知高度的浮动元素?

    我有一个 水平 居中的外部 div 其中包含两个宽度未知的元素 div style width 100 margin 0 auto div div div div div 默认情况下 两个浮动都是顶部对齐的 并且具有变化 未知和不同的高度
  • 以编程方式在运行时获取摘要注释

    我正在寻找一种方法来以编程方式获取 ASP net 中方法的 Xml 注释的摘要部分 我查看了之前的相关帖子 但他们没有提供在网络环境中执行此操作的方法 我无法使用任何第三方应用程序 并且由于网络环境 Visual Studio 插件也没有
  • 当存在无效路径时如何使毕加索显示默认图像

    我在此处显示默认图像名称 R drawable avatar placeholder 时遇到一个问题 当来自Web服务的链接非空 但错误404时 意味着该链接路径上没有任何图像 如果我在下面运行此函数 则会显示字符串 路径不为空 但无法显示
  • Excel:获取单元格颜色

    1 如何使用 Excel 宏获取单元格的颜色 我无法让这个功能工作 Sub BGCol MRow As Integer MCol As Integer bgColor Cells MRow MCol Interior ColorIndex
  • C++:隐藏规则背后的基本原理

    背后的理由是什么隐藏规则 in C class A void f int class B public A void f double B f int is hidden 如果这是一个有意义的功能 我认为也应该可以隐藏函数而无需定义具有相同