C++ 是否可以删除继承的成员或阻止继承某些属性/方法?

C++ 是否可以删除继承的成员或阻止继承某些属性/方法?,c++,c++11,C++,C++11,我想知道是否有可能从基类中“删除”成员/方法,或者禁止它们被继承 假设我有一个类a,它定义了一个下标操作符,并将该操作符的读/写操作存储在映射对象内部。然后我创建了从A继承的B。有没有办法从B中删除下标运算符,或者更确切地说,防止它被继承,从而成为B的一部分 很抱歉这么冗长,但要说清楚,我不是在寻找final关键字这样的功能,我想防止B重载A中的内容。我希望基本上说“B,从A继承除X以外的所有内容”。我认为这是不可能的,答案很可能是“修复/改进您的设计”,但我认为这样做没有坏处。将要“删除”的函

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

假设我有一个类
a
,它定义了一个下标操作符,并将该操作符的读/写操作存储在映射对象内部。然后我创建了从
A
继承的
B
。有没有办法从B中删除下标运算符,或者更确切地说,防止它被继承,从而成为B的一部分


很抱歉这么冗长,但要说清楚,我不是在寻找final关键字这样的功能,我想防止B重载A中的内容。我希望基本上说“B,从A继承除X以外的所有内容”。我认为这是不可能的,答案很可能是“修复/改进您的设计”,但我认为这样做没有坏处。

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

谢谢。我实际上试图阻止的是继承这些方法带来的开销。例如,重载下标运算符,然后存储/检索传递的参数,这些参数可能类似于boost::any或cdigins::any。我想避免这个对象开销,而不必破坏现有的继承链。+1'd,我想答案是我想做的事情是不可能的。如果我将函数设置为私有,那么其他外部成员也无法访问它。我想我有点搞砸了,可能不得不重新考虑这个设计。因为您是从Base派生的,所以派生中需要Base的所有成员(派生的构造函数首先调用Base的构造函数,所以在派生中构造完整的Base对象)。因此,在实际的C++标准中,我认为没有任何方法可以在字节级移除方法。你可以尝试一个基于策略的设计,每个类只使用他们需要的方法,这样你就可以摆脱开销。AHHH,我实际上有Andrei Alexandrescu的C++书籍,他在这里详细地讨论了这个问题。也许这次我会把它拔出来,掸掉灰尘,做更多的事,而不仅仅是扫一扫英雄联盟