如果在虚函数中使用内联函数会发生什么?我对这样的问题感到困惑 http://www.parashift.com/c++-faq-lite/value-vs-ref-semantics.html#faq-31.6
我能理解它,但是这意味着,在虚函数中使用(调用)内联函数是没有意义的(请假设它是动态调用的)?
class Wrapper
{
public:
inline void doInlineJob() {;}
};
class Base
{
virtual void foo()
{
//Do something
}
};
class Derived: public Base
{
void foo()
{
wrapObj.doInlineJob();
}
Wrapper wrapObj;
};
答案 0 :(得分:9)
foo是否为虚拟并不重要。只有doInlineJob是虚拟的才重要。它不是,所以它可以没有问题地内联。
答案 1 :(得分:2)
如果我在虚函数中使用内联函数会发生什么?
没什么特别的。如果编译器同意,它将被内联,如果没有,它将不会。就像任何其他功能一样。
(请注意,常见问题解答会同时讨论本身 inline
和virtual
的功能。这是不同的。)