2015-11-01 64 views
0

如果一个函数体是在一个类内部定义的,那么编译器会将它标记为内联? (即使不是由作家标记)一个类中的内联函数

例如:

class F { 
public: 
    void func() { 
    std::cout << "is this inline?\n"; 
    } 
}; 
+2

@PaulR这里有一个更好的重复:http://stackoverflow.com/q/9192077/3425536 – emlai

+1

@zenith:谢谢,是的 - 一个更好(有太多的选择!)。 –

回答

4

是。

[C++14: 9.3/2]:的成员函数可以在它的类定义来定义(8.4),在这种情况下,它是一个内联成员函数(7.1.2),或者它可以如果其类定义之外被定义已经被声明,但在其类定义中没有定义。 [..]

然而,这是否超出了相关联动要求任何可观察到的影响仅仅是可预测的inline关键字永远是。

此规则的原因是,经由标题将类别定义—成员函数和所有—包括到多个翻译单元中是合法的。否则,您应该有多重引用链接器错误。

0

如果在一个类内部声明一个函数的主体,它等同于在该类之外定义该函数,并用inline关键字作为它的前缀,但不管它是否被内联最终取决于编译器。