cmath 标题混乱

pic*_*c11 5 c++

数学函数的命名空间是什么?全球还是std

考虑余弦函数。它有 3 个重载。但cosmath.h也留下了遗产。C 对函数重载一无所知。因此cos(x)无法解决cos(float). 解决方案是显式调用单精度版本cosf(x)。我错过了什么吗?

APr*_*mer 5

<math.c>在 C++ 中,通过包含和可以获得相同的功能<cmath>,唯一的区别是命名空间。IE 包括<math.h>也会给你带来超载。

理论上,在 C++03 中,using<math.h>给出了在全局命名空间和 std 命名空间中定义的符号,而 using<cmath>给出了在 std 命名空间中定义的符号,而不是在全局命名空间中定义的符号。

实践是不同的,C++ 0X 将理论与实践结合起来。<math.h>为您提供在全局命名空间中定义的符号,也可能在 std 命名空间中定义的符号,而 using 为<cmath>您提供在 std 命名空间中定义的符号,也可能在全局命名空间中定义的符号。