【C++】把类定义在头问件中,为何在连接时不会报重复定义的错误?

在头问件中定义一个类,然后被多个cpp文件include,为何连接时不会报重复定义的错误?

图片说明
图片说明
图片说明
图片说明

头文件有宏#ifdef等来防止重复包含
还有另外一个方式#pragma once也可以防止重复包含

头文件都有防止重复包含的宏

头文件,一般只用来放声明,而不能用于放定义。
如果是定义,头文件多处包含后,是会产生重复定义的错误。

如果一定要放,可以考虑使用 #ifdef 来防止重定义。