为什么类的定义应当写在头文件中,从而被多个源文件包含?

为什么类的定义应当写在头文件中,从而被多个源文件包含?,第1张

因为这遵守“单一定义规则”(One-Definition Rule, ODR)。根据此规则,

如果对同一个类的两个定义完全相同且出现在不同编译单位,会被当作同一个定义。

这里头文件分别被两个不同的编译单位(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)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11553322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存