关注 this question ,我想知道为什么 C++ 中的 struct\class 必须有一个虚拟方法才能成为多态。
强制使用虚拟析构函数是有道理的,但如果根本没有析构函数,为什么必须要有虚拟方法?
最佳答案
因为 C++ 中多态对象的类型基本上是由指向其 vtable 的指针确定的,该 vtable 是虚函数表。但是,只有在至少有一个虚拟方法时才会创建 vtable。为什么?因为在 C++ 中,你永远不会得到你没有明确要求的东西。他们称之为“您不必为不需要的东西付费”。不需要多态性?您刚刚保存了一个 vtable。
关于C++:为什么结构\类需要一个虚拟方法才能成为多态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831863/