大多数命名冲突发生情况

文件.cpp,b.cpp,和将所有编译main.cpp就好了,因为个人没有问题。然而,当.cpp和b.cpp放在同一个项目,一个命名冲突会发生,因为函数是定义在dosomething()。这将导致链接器错误。
大多数命名冲突发生在两种情况下:
1)将两个文件添加到具有相同名称(链接器错误)的函数(或全局变量)的同一个项目中。
2)一个代码文件包含一个包含一个与其他东西冲突的标识符的头文件(编译错误)。我们将在下一节课中讨论头文件。
随着程序变得越来越大,并使用更多的标识符,被引入的命名冲突的可能性大大增加。好消息是,C++避免命名冲突提供了大量的机制(如局部范围,使变量在函数内部的互相矛盾,和命名空间,我们将介绍不久),所以大部分时间你不需要担心这个。
std命名空间
当C++最初的设计,所有的C++标准库中的标识符(如CIN和法院)都可直接使用。然而,这意味着标准库中的任何标识符都可能与您为自己的标识符选择的名称冲突。代码工作可能会突然有一个命名冲突的时候你#包含标准库中的新文件。或更糟的是,程序将编译一个版本的C++下编译可能不是未来版本的C++下,作为新的功能引入到标准库可能冲突。所以C++感动所有功能在标准库为一个特殊的区域称为命名空间。
就像一个城市保证城市内的所有道路都有独特的名字,一个命名空间保证命名空间中的标识符是唯一的。这样可以防止命名空间中的标识符与其他标识符冲突。
原来,std::cout的名字并非“std::cout”。这实际上只是“cout”,和“性病”是命名空间的名字,它生活在。所有的C++标准库的功能是在命名空间std中定义的命名(简称标准)。这样,我们不必担心标准库的功能与我们自己的标识符的命名冲突。
我们将谈论更多的空间在未来教训,教你如何创建你自己的。现在,你真的需要知道命名空间的唯一的一件事是,当我们使用一个标识符(如std::cout),是标准库的一部分,我们需要告诉编译器,该标识符在std命名空间中的生活。
规则:当您在命名空间中使用标识符时,您必须始终与标识符一起标识命名空间
显式命名空间限定性标准::
告诉编译器cout生活在std命名空间中利用“性病的最直接的途径::”前缀。例如:

std::cout <<“Hello World!”;
这是使用cout的最安全的方式,因为没有歧义的地方法院的生活(这显然是在std命名空间中)。

C++提供了其他快捷键说明命名空间标识符的一部分(通过使用语句)。我们在那些课4.3c --使用语句。


很难描述命名空间现在因为我们还没有覆盖的一些语言,我真的很需要准确地描述他们的。一种认为他们现在:命名空间将前缀变量和类型的名字。这个前缀函数非常像你的最后一个名字在现实生活中-它有助于确保即使你可能有相同的第一个名字作为别人,你仍然可以唯一地确定通过使用两个你的名字在一起。这有意义吗?我谈论更多关于4章中的命名空间。
关于你的第二个问题,因为这个语句以分号结束,你可以把另一个声明,这个声明的权利。然而,这通常被认为是坏的形式。每行的一个语句是推荐的做法,与一个可选的注释到右边(或以上)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值