据我所知,编译器可以在编译时知道对象的类型在运行时(C++ faq)时内联虚函数调用.
但是,当一个人从基类实现纯虚方法时会发生什么?是否适用相同的规则?下面的函数调用是否会被内联?
class base
{
public:
virtual void print() = 0;
virtual void callPrint()
{
print(); // will this be inline?
}
};
class child : public base
{
public:
void print() { cout << "hello\n"; }
};
int main()
{
child c;
c.callPrint();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我认为我原来的示例代码实际上是我想要问的不好的代表.我已经更新了代码,但问题仍然存在.