关于inline函数和非inline函数

今天在学习C++时看到了“在多个文件中使用类”这一小节,对于其中的内容不是十分理解,因此在此记录,并提出自己的一些看法。

如果有多个文件都需要 用到同一个类,那么就可以把这个类写在一个头文件中,但是类的非内联成员函数的函数体只能出现在一个.cpp文件中,不能放在头文件中被多个.cpp文件包含,否则链接时会发生重复定义的错误。类的内联成员函数的函数体最好写在头文件中,这样编译器在处理内联函数的调用语句时,就能在本文件中找到内联函数的代码,并将这些代码插入调用语句处。内联成员函数放在头文件中被多个.cpp文件包含,不会导致重复定义的错误。——《新标准C++》 郭炜著

上网查阅了下,发现有很多人都说内联函数需要声明定义在一起,并且都放在头文件中。对于内联函数,我也在书上看到过,需要在调用点前面完整定义,即出现声明和函数体,但是需不需要再一起到时没有说,网上也看到了一个例子。只需要在函数声明前加上extern即可实现声明和函数体分离了。
对于内联函数的这一特性,我的理解是这样的:内联函数需要在每一个文件中都有一个定义,因此在头文件中是没问题的,不会出现重复定义的问题;而对于非内联函数,则只需要定义过一次就可以了,在头文件中的话,每个文件都进行一次定义,结果出现了重复定义的错误。
但是我无法确认理解的正确性,甚至相当怀疑,并且该理解也停留于表面,之后有了深入的理解再来补充吧。

猜你喜欢

转载自blog.csdn.net/qq_39805362/article/details/82725383