C++中类定义可以写在.h文件,但函数定义却不行

2020-07-20  本文已影响0人  尘埃里的玄

参考《C++ Primer中文版》第四版 人民邮电出版社 P58:

    因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。

    对于头文件不应该含有定义这一规则,有三个例外。头文件可以定义类、值在编译时就已经知道的const对象和inline函数。这些实体可在多个源文件中定义,只要每个源文件中的定义是相同的。

    在头文件中定义这些实体,是因为编译器需要它们的定义(不只是声明)来产生代码


类定义含类作用域内的函数与变量定义,也就是成员函数与数据成员。 

1. 内成员函数如果隐式内联了,当然没有问题,可以放在头文件中。否则,如果显示内联,可以放在头文件中。如若不然,放在头文件中可能引起重复定义。 

2. 数据成员:静态成员定义放在头文件中,可能会引起重复定义。非静态数据成员定义在类实例化的时候,才定义。

从根本上分析的话,还得从链接属性上分析。 


所以说光函数不能在里面定义,除非把函数体写出来,都放在里面就可以通难过引用.h文件来使用函数

上一篇下一篇

猜你喜欢

热点阅读