gpt4 book ai didi

c++ - 所有 C++ 头文件都是一个类吗?

转载 作者:行者123 更新时间:2023-12-01 17:55:33 25 4
gpt4 key购买 nike

我正在阅读 Deitel 书中的 C++,我读到了这一部分:

Some functions, such as main , are not members of a class. These functions are called global functions. We introduce various functions from the header here to present the concept of global functions that do not belong to a particular class.

说完这个 block (这个 block 本身就在Math库下),它引入了一些函数,例如属于cmath头文件的sqrt(),最后是它说所有属于 cmath 的函数都是全局的!

所以,这是我的问题:在顶部我们说过,所有不属于任何类的函数都是全局函数;但随后它说所有与cmath相关的函数都是全局的!那么这不是矛盾吗?我的意思是,如果我们接受这一点,则意味着并非所有 header 都是类。是吗?

C++ Deitel Book

最佳答案

头文件本身并不会引入新的作用域或命名空间,甚至任何类。

预处理器#include指令中包含的头文件基本上按原样复制粘贴到translation unit中供编译器后期解析。

简而言之,源文件和头文件之间确实没有区别。两者都可以包含函数或类声明或定义。

<小时/>

一个非常简化的示例。

假设您有头文件 a.h,其中包含单个函数声明:

void a_function();

然后你就有了一个包含头文件的源文件:

#include "a.h"

int main()
{
a_function();
}

预处理后,翻译单元将如下所示:

void a_function();

int main()
{
a_function();
}

函数a_function不是类的一部分,它是一个全局函数。

关于c++ - 所有 C++ 头文件都是一个类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57884219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com