为什么C++的头文件需要做防卫式声明?

防止同一个头文件被包含多次而导致重复定义。

举个例子:如果没有防卫式声明

// 头文件 A.h

class A{};

// 头文件 B.h

#include "A"

using namespace std;

class B{};

// main.cpp

#include "A"

#include "B"

using namespace std;

int main()

{

    B b;

    reutrn 0;

}

编译出错,Redefination of 'A'

为什么会出现这样的情况??

在编译阶段,编译器会把头文件展开。此时main.cpp中的代码如下:

class A{};

calss A{};

class B{};

int main()

{

    B b;

    return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容