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

2024-02-11

为什么在成员函数的定义中要使用inline关键字?并且不在声明中?


inline有一些史前用途,但现在最好记住它是这样说的:“这个定义将被定义多次,没关系。”

也就是说,通常单定义规则禁止对一个函数进行多个定义。这:

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

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

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

导致错误,如foo在两个翻译单元中定义。你可以declare事情随你所欲。这:

// foo.hpp
void foo();

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

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

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

很好,因为foo定义一次,声明多次。什么inline确实允许这样做:

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

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

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

上班。它说“如果你看到foo不止一次,假设它们是相同的并且接受它”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐