C++ 头文件和命名空间

标签 c++ namespaces

我的教授在大学时告诉我们的内容与我在 Stroustrup 的书中读到的内容有些混淆。

  • 我们都知道 C++ header 基本上是 声明(在 file.h 中定义),它们可以包含例如 类的集合。它们非常有用,因为它们给了我们一个 很多功能存储在一个空间中

  • 命名空间是为了组织类、函数、 types (...) 在程序的一部分中没有定义类型。

当我必须创建一个项目时,我看不到这里的具体区别。


如果我必须(例如)编写一个程序来求解不同程度的方程,我会把我需要的类放在一个文件中。例如,我将在 equations.h 中放置所有这些东西:secondDeg 类、thirdDeg 类、fourthDeg 类等等。

那我为什么要使用命名空间?

答案(我猜)是:因为您可以为更好的组织命名(参见 std::cin)。但在这种情况下我应该

  1. 创建 equations.h(或其他)
  2. 例如创建一个名为 eq 的命名空间
  3. 将我的类放入命名空间

这真的有必要吗?我不能只使用一个头文件并将我所有的类放在里面吗?

最佳答案

Why should I use a namespace then?

命名空间可以包含多个 header ,例如 namespace std包含来自 <vector> 的定义<list>

您可以定义自己的namespace不污染全局 namespace 并避免冲突。最好将命名空间限制为您需要的最小值,因此 using namespace std;通常会避免。

关于C++ 头文件和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131900/

相关文章:

Swift - 当框架/模块具有相同名称的类时不能使用命名空间

matlab - 加载文件只知道名称的开头

c++ - 在动态加载的库中我的内存分配在哪里?

c++ - iostream和命名空间std有什么关系?

python - Python 中的命名空间问题

c++ - CComSafeArray : Are Indices Really Reversed for MultiDimSetAt and MultiDimGetAt?

c# - 找不到命名空间或数据类型 NavMeshAgent Unity 3d

c++ - 构建第一个项目时出现 Qt 错误 [Windows]

c++ - 访问派生类中 protected 成员函数——段错误

c++ - 静态数据成员的模板特化