【发布时间】:2018-01-11 17:54:57
【问题描述】:
只是一个简单的愚蠢问题:
我想知道 C++ 是否在内部利用了虚拟继承提供的多重继承特性。我确信对于模板化的实现,比如 STL 提供的数据结构(例如 std::vector )不能使用这样的特性,但是像流这样的其他对象呢。
我知道在某些情况下多重继承可能很方便(例如,对于交叉委托),但我觉得如果 C++ 开发人员决定避免在他们的代码中使用这种特性,我应该避免它。
谢谢大家!
【问题讨论】:
-
标准流类。
-
不要用感觉来做编程决定。 appeal to authority 也是一个逻辑谬误。
-
@zzyz 实际上,我已经使用了几个框架,比如现在已经不复存在的 Reuters Triarch,它们很好地利用了 MI - 这真的取决于设计师的技能。
-
实现,例如 LLVM libc++ 和 GNU libstdc++,在大约十几个地方使用多重继承,包括在 std::vector 的实现细节中(是什么让你认为它们“不能”在那里使用它?)虚拟继承 - 不是那么多,它只是流。
标签: c++ multiple-inheritance internals