c++ - 可以删除继承的成员或阻止继承某些属性/方法吗?

标签 c++ c++11

我想知道是否有可能从基类中“删除”成员/方法,或者更确切地说禁止它们被继承?

假设我有一个类 A ,它定义了一个下标运算符,并将该运算符的读/写存储在内部的 map 对象中。然后我创建继承自 AB 。有什么方法可以从 B 中删除下标运算符,或者更确切地说,防止它被继承并从而成为 B 的一部分?

很抱歉这么冗长,但为了说清楚,我并不是在寻找诸如final关键字之类的功能,我想防止B重载A中的某些内容。我基本上想说的是“B,继承 A 的一切,除了 X”。我认为这是不可能的,最有可能的答案是“修复/改进你的设计”,只是认为无论如何询问也没有什么坏处。

最佳答案

将要“删除”的函数(或成员)设为私有(private),这样派生类将无法“看到它”。没有其他方法可以从派生对象中物理删除该函数(因为派生对象包含基类的拷贝,其中需要您的函数/成员),但是将其设为私有(private)可以保证派生对象无法访问它。

关于c++ - 可以删除继承的成员或阻止继承某些属性/方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190135/

相关文章:

c++ - 为什么这个返回nan?

c++ - 如何从文件加载const变量的内容?

c++ - 三角函数计算源代码

c++ - 如何覆盖 printf 输出的先前字符串

c++ - 在基于 Trident 的应用程序中调试 JavaScript

c++ - vector 调整大小不起作用?

c++ - `decltype` 并将 ADL 查找与非 ADL 查找混合

c++ - make_shared<>() 中的 WKWYL 优化是否会为某些多线程应用程序引入惩罚?

c++ - 为什么构造函数没有被调用

c++ - 我如何指示 Emscripten 在编译期间应将源文件放置在何处?