例如
// a.h
strcut A
{
void simpleMethod();
void anotherMethod() {...; simpleMethod(); ...;}
};
// a.cpp
#include "a.h"
void A::simpleMethod() { one_line_simple_implementation; }
我的问题是:可以通过现代编译器优化simpleMethod()
内联吗?anotherMethod()
在这种情况下,是的。如果a.cpp
包括a.h
(我想是的)。只要编译器可以看到完整的定义。没事。但你需要这么说。
inline void A::simpleMethod() { one_line_simple_implementation; }
inline void A::simpleMethod() { ... }
如果不使用inline
关键字,您可以使用,否则可能会出现多个定义错误。或者你可以做
class A
{
void foo() { ... };
};