继承:选择继承哪些基类方法[关闭]

2023-12-23

我有课Base并想写一个类Derive它仅继承了部分成员函数Base。有什么方便的方法可以做到这一点吗?

例如,

class Base
{
   ...
   void fooA();
   void fooB();
   ...
}

我想定义一个class Derive它继承了除fooB from Base.


当你从基类派生子类时,你继承了all来自基类的成员函数(构造函数和析构函数除外,它们永远不会被继承)。您无法挑选要派生的成员。

然而,这似乎是一个XY问题 https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem。取决于你是什么really尝试去做,你也许能够实现你的实际目标。

您可以更改派生方法的可见性:

class Derived : public Base
{
private: 
  using Base::fooB; // fooB() is now private
};

您可以使用私有继承,然后仅公开您希望提供的那些方法:

class Derived : private Base
{
public:
  using Base::fooA;  // Only fooA() is public here
};

你可以完全避免继承并且封装 http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29 Base相反,并提供桥接法 http://en.wikipedia.org/wiki/Bridge_pattern对于资源在Base您希望提供以下访问权限:

class Derived 
{
Base mBase; // private
public:
  void fooA() { mBase.fooA(); }
};

但是,请注意,在后两种情况下,您将失去多态性的一些好处。为了有一个Base*指向实际上是一个的东西Derived,您必须使用公共继承。

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

继承:选择继承哪些基类方法[关闭] 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲

随机推荐

  • “Where”子句中的动态表达式 - Linq to SQL

    我是 LINQ 的新手 所以我希望这不是一个愚蠢的问题 我有一个在数据网格中显示大量内容的表格 我希望用户能够通过使用网格上方的一些组合框 如搜索栏 来过滤网格 我创建了一个方法 它获取组合框中的文本 并将其放置在 Where 子句中 pu
  • 从 void 函数返回[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从函数返回哪种更正确的方法 void function blah some code OR void function blah some co
  • 如何使用 Chef 菜谱来设置环境变量?

    如何使用 Chef 菜谱来设置环境变量 我需要使用 Chef 食谱设置环境变量 您能提供一个如何实现这一目标的示例吗 如果您需要严格在 Chef 进程内设置环境变量 则可以使用ENV foo bar 因为这是一个 ruby 过程 如果您需要
  • self.tableView.delegate = self Swift

    如果我有一个 UIViewController 并且我在故事板中将 tableView 连接到它 连接 tableview 出口 然后通过连接检查器连接数据源和委托方法 cntrl 拖动到 vc 橙色圆圈图标 我还需要添加self tabl
  • 如何解决没有 xargs -d 的 MacOS X 问题?

    我有以下命令 xargs d n n 8 bash c phpcs element PSR2 1 2 3 4 5 6 7 8 gt 2 2 gt dev null 如果我在 Linux 中运行此命令 它会起作用 如果我尝试在 Mac OSX
  • Apiary:是否可以记录 JSON 响应字段是什么?

    我想记录实际的 JSON 字段本身代表什么 我已经记录了 GET 语句和参数 但这并不能提供给用户的完整文档 那么 在下面的示例中 我将如何添加有关 OtherFields 的注释 支持吗 或者我是否需要在其他地方制作一份配套文档 View
  • GStreamer:将虚拟音轨添加到接收的 rtp 流中

    我正在使用以下命令从 Raspberry 相机启动 RTP 流 raspivid n vf fl t 0 w 640 h 480 b 1200000 fps 20 pf baseline o gst launch 1 0 v fdsrc h
  • 获取 Span 文本的值

    我有一个跨度class span 和一个隐藏字段class dropdown The span文本发生变化 我需要抓取文本并将其设置为隐藏字段值的值 然后我将使用 php 我已经有了 并使用隐藏字段的名称通过电子邮件将文本发送给我 我该怎么
  • 在 .app 运行时触发脚本(AppleScript 或 JXA)?

    我有一个小型计算机实验室 供学生在无人监督的情况下使用 并在网络上连接了打印机 我正在尝试实现一个简单的脚本添加警报对话框 其中包含有关打印机的所有规则 当他们从任意数量的不同应用程序中选择打印时 我需要弹出这些规则 我正在尝试将脚本直接附
  • 禁用 JButton 的空格键触发单击

    JButton 认为按空格键与单击 JButton 相同 假设 JButton 具有焦点 我在这里假设 有没有办法关闭这种行为 让他们忽略按空格键 另外 更一般地说 是否有一种技术可以做到这一点AbstractButtons 您可以通过执行
  • 删除默认构造函数仍然是微不足道的?

    查看标准中普通默认构造函数的定义 如果默认构造函数不是用户提供的并且满足以下条件 则它是微不足道的 它的类没有虚函数 10 3 也没有虚基类 10 1 并且 其类的非静态数据成员没有大括号或等于初始化程序 并且 其类的所有直接基类都有简单的
  • 如果用户有 cookie javascript 如何重定向用户

    我需要知道当用户第一次使用 javascript 访问该页面时如何为他们提供 cookie 然后我需要 cookie 在 1 小时内过期 如果 cookie 仍然存在并且他们尝试在 1 小时结束之前访问该页面 那么它会重定向他们 相关解决方
  • HTML5 视频的图像占位符备用

    我使用以下代码在页面上实现 HTML5 视频
  • .NET System.Diagnostics.Stopwatch 问题(返回值太低)

    在我的计算机上 秒表返回的值太低 例如 当我指定时为 200 毫秒Thread Sleep 1000 该程序应该等待 1 秒 我也测试过ManualResetEvent WaitOne 1000 并得到相同的结果 框架 2 0 和 3 0
  • SQL 中的排除语句

    如何使用SQL语句从SQL数据库中排除数据 我的情况是 我有一个用户登录到他们的个人资料页面 他们可以在其中与人交友 我想显示在 SQL 数据库中找到的除他们自己之外的所有用户 也许只是 SELECT FROM Users WHERE Us
  • 如何创建一个迭代器来生成项目,其中没有项目的单个字符在 python 中表示超过 n 次?

    我创建了一个脚本 它使用以下代码来迭代 sCharacters 字符串中的所有字符组合 sCharacters abcdefghijklmnopqrstuvwxyz0123456789 iKeyLength len sCharacters
  • 如果 PostgreSQL 上不存在如何添加列?

    问题很简单 如何添加列x到餐桌y 但仅当x列不存在 我找到了唯一的解决方案here https stackoverflow com questions 9991043 how can i test if a column exists in
  • nginx代理通过Node,SSL?

    我的 nginx 服务器实际上是用一个简单的方法代理我的节点后端 监听端口 3000 location api proxy pass http upstream 1 其中upstream 1是我在nginx conf中定义的节点集群 在端口
  • 什么是跟踪分支?

    有人可以解释一下适用于 git 的 跟踪分支 吗 这是来自的定义git scm com https git scm com book en v2 Git Branching Remote Branches Git 中的 跟踪分支 是本地分支
  • 继承:选择继承哪些基类方法[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有课Base并想写一个类Derive它仅继承了部分成员函数Base 有什么方便的方法可以做到这一点吗 例如 class Base void