数学函数的命名空间是什么?全球还是std
?
考虑余弦函数。它有 3 个重载。但cos
math.h也留下了遗产。C 对函数重载一无所知。因此cos(x)
无法解决cos(float)
. 解决方案是显式调用单精度版本cosf(x)
。我错过了什么吗?
<math.c>
在 C++ 中,通过包含和可以获得相同的功能<cmath>
,唯一的区别是命名空间。IE 包括<math.h>
也会给你带来超载。
理论上,在 C++03 中,using<math.h>
给出了在全局命名空间和 std 命名空间中定义的符号,而 using<cmath>
给出了在 std 命名空间中定义的符号,而不是在全局命名空间中定义的符号。
实践是不同的,C++ 0X 将理论与实践结合起来。<math.h>
为您提供在全局命名空间中定义的符号,也可能在 std 命名空间中定义的符号,而 using 为<cmath>
您提供在 std 命名空间中定义的符号,也可能在全局命名空间中定义的符号。