所有的C ++标头都是类吗?

法博德·艾哈迈迪安

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

某些函数(例如main)不是类的成员。这些功能称为全局功能。我们从头开始介绍各种功能,以介绍不属于特定类的全局功能的概念。

在说了这个块之后(该块本身完全在Math库中),它引入了一些函数,例如属于cmath标头的sqrt()最后它说所有属于cmath的函数都是全局的!

因此,这就是我的问题:在最上面,我们说过,所有不属于任何类的函数都是全局函数。但是它说与cmath相关的所有功能都是全局的!那不是矛盾吗?我的意思是,如果我们接受这一点,则意味着并非所有标头都是class这样对吗?

C ++ Deitel书

一些程序员哥们

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

预处理#include指令中包含的头文件基本上按原样复制粘贴到转换单元中,以供编译器的后续阶段进行解析。

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


一个非常简化的示例。

假设您有a.h一个包含单个函数声明的头文件

void a_function();

然后,您将获得一个包含头文件的源文件:

#include "a.h"

int main()
{
    a_function();
}

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

void a_function();

int main()
{
    a_function();
}

该函数a_function不是类的一部分,而是全局函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章