关于inline函数和非inline函数

关于inline函数和非inline函数今天在学习C++时看到了“在多个文件中使用类”这一小节,对于其中的内容不是十分理解,因此在此记录,并提出自己的一些看法。如果有多个文件都需要用到同一个类,那么就可以把这个类写在一个头文件中,但是类的非内联成员函数的函数体只能出现在一个.cpp文件中,不能放在头文件中被多个.cpp文件包含,否则链接时会发生重复定义的错误。类的内联成员函数的函数体最好写在头文件中,这样编译器在处理内联函数…

大家好,欢迎来到IT知识分享网。关于inline函数和非inline函数

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

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

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10028.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信