成员函数定义中的内联关键字

Dew*_*Dew 4 c++

为什么在成员函数的定义中应该使用inline关键字.而不是声明?

GMa*_*ckG 10

inline 有一些史前用途,但现在最好记住它说:"这个定义将被定义多次,这没关系."

也就是说,通常单定义规则禁止函数的多个定义.这个:

// foo.hpp
void foo() { /* body */ }

// a.cpp
#include "foo.hpp"

// b.cpp
#include "foo.hpp"
Run Code Online (Sandbox Code Playgroud)

导致错误,如foo在两个翻译单元中定义的那样.您可以根据需要随时声明事物.这个:

// foo.hpp
void foo();

// foo.cpp
void foo()
{
    /* body */
}

// a.cpp
#include "foo.hpp"

// b.cpp
#include "foo.hpp"
Run Code Online (Sandbox Code Playgroud)

很好,如foo定义一次,并多次声明.什么inline是允许的:

// foo.hpp
inline void foo() { /* body */ }

// a.cpp
#include "foo.hpp"

// b.cpp
#include "foo.hpp"
Run Code Online (Sandbox Code Playgroud)

上班.它说"如果你foo不止一次看到,只要假设它们是相同的并且可以使用它".