c++名字空间

原创 2012年03月22日 21:26:07

c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件:

// one.h

char func(char);

class String { ... };

// somelib.h

class String { ... };

如果按照上述方式定义,那么这两个头文件不可能包含在同一个程序中,因为String类会发生冲突。

所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。比如:

// one.h

namespace one

{

    char func(char);

    class String { ... };

}

// somelib.h

namespace SomeLib

{

    class String { ... };

}

现在就算在同一个程序中使用String类也不会发生冲突了,因为他们分别变成了:one::String()以及Somelib::String()

这样,就可以通过声明命名空间来区分不同的类或函数等了。

比如C++标准库定义了命名空间:std,其中包含容器vector,示例如下:

#include "stdafx.h"

#include <vector>

#include <iostream>

#include <algorithm>

using namespace std;

int main(int argc, char* argv[])

{

 const int arraysize = 7;

 int ia[arraysize] = {0,1,2,3,4,5};

 file://定义容器vector

 vector<int> ivect(ia,ia+arraysize);

 vector<int>::iterator it1 = find(ivect.begin (),ivect.end (),4);

 if(it1 == ivect.end ())

  cout<<"4 not found "<<endl;

 else

  cout<<"4 found "<<*it1<<endl;

 return 0;

}

输出结果为:4 found 4.

c++基础知识---名字空间

namespace 是C++中的一个新的特性,它的出现只要是为了避免出现名字污染。JAVA语言中的packing包和C++的namespace功能差不多************************...
  • tjhgltt
  • tjhgltt
  • 2008年05月02日 22:25
  • 4707

C++匿名名字空间

转载自:http://hi.baidu.com/thinapple/blog/item/049df24f6d30bc3eaec3aba7.html 名字空间(namespace),是C++提供的一个...
  • eric_arrow
  • eric_arrow
  • 2013年05月27日 10:49
  • 1750

C++名字空间详解

名字空间的由来名字空间(namespace)是由标准C++引入的,是一种新的作用域级别。原来C++标识符的作用域分为三级:代码块({…}和函数体)、类域和全局作用域。如今,在类作用域和全局作用域之间,...
  • K346K346
  • K346K346
  • 2015年08月29日 18:45
  • 5612

c++名字空间指令与名字空间声明

在使用任何名字空间之前,编译器必须能够找到他,即确定他的声明所在的作用域。使用某个名字空间中的名字最简单的方式就是使用限定名字,即把名字空间的名字(如numeric)作为前缀,然后加上作用域操作符(:...
  • garygeeker
  • garygeeker
  • 2014年04月21日 16:56
  • 699

C++初级主题--名字空间域和类域

一.序在C++中支持三种域:局部域、名字空间域和类域。二.名字空间域1.名字空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字names...
  • derkampf
  • derkampf
  • 2017年02月05日 18:10
  • 869

C++名字空间

http://hi.baidu.com/laddie10/item/3f1e2fd404bd19e6b2f777eb C++中新定义的方法都是有名字空间的 比如cout就属于std名...
  • huangjing_whlg
  • huangjing_whlg
  • 2014年03月20日 16:03
  • 671

c++中无名命名空间的使用

在今天看一些源码的时候,无意间发现了   namespace {inline int getValue(int); }类似与这样的用法,虽然学习了这么久的c++,但是真的还是第一次看见 然后就在网上...
  • u011619422
  • u011619422
  • 2015年08月21日 09:45
  • 2430

c++ static_const函数调用_名字空间

static 1: C语言static的功能适应于C++; 2: static 修饰c++的静态成员: 权限: static 数据类型 名称; 相当于类::静态变量,它...
  • qq_36482772
  • qq_36482772
  • 2018年02月01日 06:44
  • 26

C++无名命名空间详解

C++无名命名空间详解
  • y396397735
  • y396397735
  • 2015年08月21日 15:31
  • 1149

C++中的名字空间----避免名字冲突

名字空间是一种描述逻辑分组的机制。也就是说,如果有一些声明按照某种准则在逻辑上属于同一个集团,就可以将它们放在同一个名字空间,以表明这个事实。   名字空间对于模块化的程序设计有重要作用。  ...
  • rns521
  • rns521
  • 2011年11月17日 12:56
  • 622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++名字空间
举报原因:
原因补充:

(最多只允许输入30个字)