源文件中定义的方法可以内联吗?

时间:2013-09-26 01:36:32

标签: 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()吗?

2 个答案:

答案 0 :(得分:1)

在这种情况下,是的。如果a.cpp包含a.h(我猜是这样)。只要编译器可以看到完整的定义。没事。但你需要说出来。

inline     void A::simpleMethod() { one_line_simple_implementation; }

答案 1 :(得分:0)

如果您不使用inline void A::simpleMethod() { ... }关键字,则可以使用inline,否则可能会出现多个定义错误。 或者你可以做到

class A
{
    void foo() { ... };
};