微信公众号: 星点课堂
新浪微博:女儿叫老白
网易云课堂:女儿叫老白
-------------------------------------------------------------------------------
中型以上项目研发时,如果研发管理不善,很容易导致研发团队出现命名冲突的情况:
- 应用程序名称冲突,比如都叫做edit.exe,或command.dll。
- 类名冲突,比如都叫CMyDialog。
- 头文件名冲突,比如都叫common.h
这时候就需要进行研发规范化管理,需要指定相应的制度,比如:
- 编码规范
- 模块命名管理制度
- 命名空间管理制度
- 目录组织结构规范
我们这里先讨论命名空间的问题。当大家都使用命名空间提供名称保护时,就可以保证各自的名称互不干扰。
比如,命名空间定义如下:
namespace ns_common {
class CMyDialog
{
……
};
} // namespace ns_common
请注意命名空间的语法,
a. 命名空间需要用一对花括号{}将需要保护的名称或代码包括进来。
b. 同类定义不一样,命名空间结束时,没有结尾的分号”;”
c. 不能将main()函数包含到命名空间内部。
在代码中使用命名空间中的类时,需要用如下的语法:
ns_common::CMyDialog dlg;
也就是:
命名空间的名称::类名
-------------------------------------------------------------------
为了防止名称污染,在使用命名空间时,也要防止引入整个命名空间,方法如下:
- 头文件中仅引入命名空间中需要的类,比如:
正确的写法:
#include <iostream>
using std::cout;
using std::endl;
错误的写法:
#include <iostream>
using namespace stl;
- 头文件中,用到命名空间的类时,采用: 命名空间名称::类名 的语法,比如
int getCount(ns_common::CMyDialog& dlg);
- cpp文件中,可以使用using namespace stl;