C++中有头文件(.h)文件和实现文件(.cpp)文件
但是头文件与实现文件具体写什么?
一、头文件的内容
#idndef
#define
…
#endif
作用:当头文件被多个其它文件引用时,内部的数据不会被多次定义而造成错误
二、Inline限定符
头文件中,可以对函数用inline限定符来告知编译器,这段函数非常简单,可以直接嵌入到定义之处。有循环、分支、递归的函数都不要用作inline,代码最好短到只有3-5行。
对于在类定义内定义实现的函数,编译器自动当作有inline请求(也是不一定inline)
在类定义内定义实现的函数,编译器自动当作有inline请求
**
三、非模板类型
**
1.全局类型
声明写在.h文件
在.cpp文件里定义、实现、初始化
2.自定义类型
包括类(class)与结构体(struct),定义放在.h文件
函数成员:
所有的函数成员其声明都放在.h文件的类定义内部
对于要inline的函数成员定义及其实现放在.h文件;其它函数的实现放在.cpp文件中
数据成员:
数据成员的声明与定义都是放在.h文件的类定义内部。
对于数据成员,关键问题是什么时候进行初始化
对于只含有static限定符的数据成员,它的初始化要放在.cpp文件中,因为它是所有类对象共有的,因此必须对它做合适的初始化。
对于只含有const限定符的数据成员,它的初始化只能在构造函数的初始化列表中完成。因为它是一经初始化就不能重新赋值,因此必须进行合适的初始化。
对于既含有static限定符,又含有const限定符的数据成员,初始化与定义同时进行
对于既没有static限定符,又没有const限定符的数据成员,它的值可针对当前对象随意修改,因此不需要在意何时进行初始化
四、模板类型:
模板在被定义的时候,编译器并不会对它进行编译,因为它没有一个实体可用
只有模板被具象化之后,编译器才会根据具体的类型对模板进行编译
文章参考:https://www.cnblogs.com/ider/archive/2011/06/30/what_is_in_cpp_header_and_implementation_file.html
感谢博主