C++知识点分享006 命名空间及使用

微信公众号: 星点课堂

新浪微博:女儿叫老白

网易云课堂:女儿叫老白

-------------------------------------------------------------------------------

       中型以上项目研发时,如果研发管理不善,很容易导致研发团队出现命名冲突的情况:

  • 应用程序名称冲突,比如都叫做edit.exe,或command.dll。
  • 类名冲突,比如都叫CMyDialog。
  • 头文件名冲突,比如都叫common.h

这时候就需要进行研发规范化管理,需要指定相应的制度,比如:

  • 编码规范
  • 模块命名管理制度
  • 命名空间管理制度
  • 目录组织结构规范

我们这里先讨论命名空间的问题。当大家都使用命名空间提供名称保护时,就可以保证各自的名称互不干扰。

比如,命名空间定义如下:

namespace  ns_common {

 

class CMyDialog

{

……

};

 

}  // namespace ns_common

 

请注意命名空间的语法,

a. 命名空间需要用一对花括号{}将需要保护的名称或代码包括进来。

b. 同类定义不一样,命名空间结束时,没有结尾的分号”;”

c. 不能将main()函数包含到命名空间内部。

 

在代码中使用命名空间中的类时,需要用如下的语法:

ns_common::CMyDialog dlg;

也就是:

命名空间的名称::类名

       -------------------------------------------------------------------

       为了防止名称污染,在使用命名空间时,也要防止引入整个命名空间,方法如下:

  1. 头文件中仅引入命名空间中需要的类,比如:

正确的写法:

#include <iostream>

using std::cout;

using std::endl;

 

错误的写法:

#include <iostream>

using namespace stl;

 

  1. 头文件中,用到命名空间的类时,采用: 命名空间名称::类名 的语法,比如

int getCount(ns_common::CMyDialog& dlg);

 

  1. cpp文件中,可以使用using namespace stl;

猜你喜欢

转载自blog.csdn.net/baizy77/article/details/82320814