C++ 源文件中定义的方法是否可以内联?

C++ 源文件中定义的方法是否可以内联?,c++,inline,C++,Inline,比如说 // a.h strcut A { void simpleMethod(); void anotherMethod() {...; simpleMethod(); ...;} }; // a.cpp #include "a.h" void A::simpleMethod() { one_line_simple_implementation; } 我的问题是:现代编译器优化能否将simpleMethod()内联到anotherMethod()中?在这种情况下,是的。如果

比如说

// 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() { ... };
};