从构造函数或析构函数调用虚函数是危险的,应尽可能避免,因为我们调用的虚函数是从基类调用的,而不是从派生类调用的。原因是,在 C++ 中,超类是在派生类之前构造的。因此,在下面的例子中,由于必须先实例化 B,然后才能实例化 D。当调用 B 的构造函数时,它还不是 D,因此虚函数表仍然包含 B 的 s() 的条目。示例代码 在线演示#include using namespace std; class B { public: B() { s(); } ... 阅读更多
C++ 中的虚函数用于创建一个基类指针列表,并在不知道派生类对象类型的情况下调用任何派生类的方法。虚函数在运行时延迟解析。虚函数的主要用途是实现运行时多态性。内联函数用于提高代码效率。内联函数的代码在编译时会在内联函数调用的位置被替换,无论何时调用内联函数。每当使用基类引用或指针调用虚函数时,它都不能内联…… 阅读更多