1.命名空间
C语言没办法解决命名冲突问题(我们自己定义的名字和库中的名字冲突;项目组中,多个人定义的名字冲突),故C++提出了namespace来解决
域作用限制符(::)
eg:
namespace AList
{
struct Node
{
struct Node* next;
struct Node* prev;
int val;
};
int min=0;
}
namespace BQueue
{
struct Node
{
struct Node* next;
int val;
};
struct Queue
{
struct Node* phead;
struct Node*ptail;
};
int min=1;
}
此时两部分内容中都含有结构体Node和min变量,重复命名了,但现在它们处于不同的命名空间中,故使用时只需标明其所在的域就可以正常使用。(命名空间的名字不能相同)
int main
{
stuct AList::Node node1;//此时命名重复的为Node,故struct在前面
stuct BQueue::Node node2;
AList::min++;
BQueue::min++;
}
或者也可以使用全局展开:(一般情况不建议全局展开)
using namespace BQueue;
struct Queue q;
也可以使用部分展开:
//全局展开
//using namespace std;
//局部展开
using std::cout;
using std::endl;