Abt*_*deh 26 c# c++ namespaces
我来自ac #background,其中所有内容都有自己的命名空间,但这种做法在c ++世界中似乎并不常见.我应该将代码包装在自己的命名空间,未命名的命名空间或没有命名空间吗?
Joh*_*itb 35
遗憾的是,许多C++开发人员不使用命名空间.当我开始使用C++时,我很长时间没有使用它们,直到我得出结论我可以使用命名空间做得更好.
许多库通过在名称前添加前缀来解决名称空间.例如,wxWidgets将字符"wx"放在所有内容之前.Qt把"Q"放在一切之前.这并没有什么不妥,但是它要求你重新输入那个前缀,即使它可以从上下文中推断出你所说的声明.命名空间具有分层次序.在词法上更接近引用它们的点的名称可以在之前找到.因此,如果您在GUI框架中引用"Window",它将找到"my :: gui :: Window",而不是":: Window".
命名空间启用了一些不带它们就无法使用的好功能.例如,如果将类放入命名空间,则可以在该命名空间中定义自由函数.然后调用函数,而不是通过导入所有名称将命名空间放在前面,或者有选择地只将其中一些命名空间放入当前范围("using declaration").
如今,我不再使用任何项目.它们使得不再重复键入相同的前缀变得如此容易,但仍然具有良好的组织和避免全局命名空间的名称污染.
Rob*_*uld 11
取决于,如果您的代码是库代码,请将其包装在命名空间中,这是C++中的实践.如果你的代码只是一个非常简单的应用程序,它不与任何其他东西交互,比如一个hello world类的应用程序,就不需要命名空间,因为它是多余的.
由于不需要名称空间,因此代码片段和Web上的示例很少使用它们,但大多数实际项目都使用它们.
归档时间: |
|
查看次数: |
4325 次 |
最近记录: |