1
35
很多C++开发人员都不使用命名空间。当我开始使用C++时,我没有使用它们很长时间,直到我得出结论,我可以更好地使用命名空间。 许多库通过在名称前加前缀来绕过名称空间。例如,wxwidgets将字符“wx”放在所有内容之前。qt把“q”放在一切之前。这并不是什么真正的错误,但它要求您重新输入前缀,即使它可以从上下文推断出您所指的声明。命名空间具有层次结构顺序。在词法上更接近引用它们的点的名称可以在前面找到。因此,如果您在GUI框架中引用“window”,它将找到“my::gui::window”,而不是“::window”。 名称空间使一些很好的功能无法在没有它们的情况下使用。例如,如果将类放入一个名称空间,则可以在该名称空间内定义自由函数。然后,通过导入所有名称,或者选择性地将其中的一些名称放入当前作用域(“using声明”),在不将名称空间放在前面的情况下调用函数。 现在,我不用它们就不做任何项目了。它们使得不再输入相同的前缀变得非常容易,但是仍然具有良好的组织性和避免全球名称空间的名称污染。 |
2
11
取决于,如果您的代码是库代码,请将其封装在命名空间中,这是C++中的实践。如果您的代码只是一个非常简单的应用程序,不与其他任何东西交互,比如Hello World之类的应用程序,那么就不需要名称空间,因为它是多余的。 而且,由于不需要名称空间,Web上的代码片段和示例很少使用它们,但大多数实际项目确实使用它们。 |
3
4
我刚刚发现了谷歌的C++风格指南 namespace guidelines. 整个指南值得一读,但总的来说,他们说:
|
4
2
这真的取决于你是否期望会有冲突。 两种情况; 1)如果您创建的代码可能会被其他人(如库)使用,那么可能会出现命名空间冲突,因此最好使用自己的命名空间。 2)如果您使用的是第三方库,则它们的代码可能没有名称空间,并且可能与您的代码冲突。 我还想说,如果您希望您的代码能够足够大并覆盖许多不同的领域(数学/物理/渲染),那么使用名称空间确实可以使代码更容易搜索,特别是对于那些没有明显分类的类型。 |
5
2
我们在托管C++的包代码中遇到了问题,这里使用了我们的公共库。
有些类与.NET库中的系统类(即System.Console)具有相同的名称。
一开始使用名称空间就可以避免这种情况。 |
6
1
只有在存在名称冲突风险的情况下才真正需要名称空间-某些全局可见的函数、变量或类被定义了多次。否则,您可以在没有名称空间的情况下做得很好——只需命名类,这样它们就不会复制运行时库类,并使全局函数/变量成为一些合理类的静态成员。 |
7
1
我会说这是一个好主意,如果没有其他原因的话,那就是在与其他第三方代码混合时,不要让你的东西被踩到。 我尽量将尽可能多的变量和函数放入类中,这样做会更进一步。但这有时比它应该做的要困难(与其他OO语言相比)。 |
8
1
真的?我看到的所有代码似乎都包装在一个名称空间中。
在爪哇
在C++中
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |