如果对同一个类的两个定义完全相同且出现在不同编译单位,会被当作同一个定义。
这里头文件分别被两个不同的编译单位(file1.cpp, file2.cpp)包含,满足ODR规则,会被当作同一个定义。
所以不会有冲突。
此外,模板和inline函数也适用此规则。
头文件里放的声明是成员函数的声明。类没有声明一说的啊!给你举个例子吧!
头文件a.h里写这些内容:
class a
{
int x=0
int y=0
public:
void set()
void display()
}
源文件a.cpp里写这些内容:
#include "a.h"
void a::set()
{.....
}
void a::display()
{.....
}
看见没?源文件里放的都是成员函数的定义!类的定义在头文件里!
你写class a的时候就已经定义类了!而对于成员函数,在头文件里只做声明。就连成员变量也是在头文件里就定义了。
写程序的时候就应该就用这种结构去做!
另外,很多源文件都有include 头文件,不会引起重定义的!因为几个源文件在共享它!对于一个cpp来说,同时包含多个头文件是可以的,但如果你在一个cpp里把一个头文件包含了多次,就会重定义!
比如写了2次#include "a.h",才会出现重定义!你自己理解一下吧!哪怕他包含1000个头文件,只要没有重复,就不会发生重定义
可以,定义几个都行,只是从代码规范上,当文件和类比较多的时候,一个对一个方便记忆和管理。在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)