c命名空间的定义和使用(c++命名空间具体表现究竟是什么怎么定义(不是声明)一个命名空间std是系统定义的命名空间吗)
本文目录
c++命名空间具体表现究竟是什么怎么定义(不是声明)一个命名空间std是系统定义的命名空间吗
#include 《iostream》using namespace std;namespace NameSpaceA//namespace为关键字,NameSpaceA为定义的命名空间{ int a = 0;//在NameSpaceA中定义一个a} namespace NameSpaceB//定义另一个命名空间{ int a = 1;//在NameSpaceB中定义一个a,这两个a的访问 namespace NameSpaceC//嵌套 { struct Teacher { char name; int age; }; }} int main(){ using namespace NameSpaceA;//使用方法一:在最前面写上就像using namespace std; printf(“a= %d\n“, a);//这个a就是NameSpaceA里面的a了 printf(“a= %d\n“, NameSpaceB::a);//使用方法2,空间名::变量 //方法一使用Teacher using namespace NameSpaceB::NameSpaceC; Teacher t1 = {“aaaaa“, 25}; //方法二使用Teacher NameSpaceB::NameSpaceC::Teacher t2 = {“bbbbbb“, 22}; return0;}
另外,std是c++标准命名空间,c++标准程序库中的所有标识符都被定义在std中,比如标准库中的类ostream 、istream等。但是在头文件iostream中并没有声明这一空间,需要程序员手动写上using namespace std; 如果不写,则在使用std::cout《《“hello...“《《endl;这样的格式。
命名空间是为了防止使用C++做大型程序的时候发生串包。
欢迎回复讨论
C#中名称空间的具体定义是什么
C#中的类是利用命名空间组织起来的。命名空间提供了一种从逻辑上组织类的方式,防止命名冲突。 命名空间声明 用namespace 关键字用于声明一个命名空间。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法。 namespace name { 类型定义 } 其中:在命名空间中,可以声明类、接口、结构、枚举、委托 命名空间。 如果未显式声明命名空间,则会创建默认命名空间。该默认的命名空间(有时称为全局命名空间)。全局命名空间中的任何标识符都可用于命名的命名空间中。 命名空间声明可以作为顶级声明出现在编译单元中,当命名空间声明作为顶级声明出现在编译单元中时,该命名空间成为全局命名空间的一个成员。 命名空间声明出现在另一个命名空间声明内时,该内部命名空间就成为包含着它的外部命名空间的一个成员。 无论是何种情况,一个命名空间的名称在它所属的命名空间内必须是唯一的。命名空间隐式地为 public,而且在命名空间的声明中不能包含任何访问修饰符。嵌套的命名空间命名空间声明中声明命名空间,各命名空间用”.”分隔。例如:namespace N1.N2{ class A {} class B {}}在语义上等效于namespace N1{ namespace N2 { class A {} class B {} }} 引用类 引用一个类可以用完全限定名来限定引用类(类名前加上命名空间名),以防止命名冲突。 using 指令来导入其他命名空间和类型的名称,直接地而不是通过限定名来引用它们。Using指令 using 别名指令为一个命名空间或类型启用一个别名。 using 命名空间指令用于导入一个命名空间的类型成员。 (1) using 命名空间指令将一个命名空间中所包含的类型导入到编译单元或命名空间体中,从而可以直接使用这些被导入的类型的标识符而不必加上它们的限定名。如: namespace N1.N2 { class A {} } namespace N3 { using N1.N2; class B { public static void Main() { A a=new A(); } } }上面的示例中,在 N3 命名空间中N1.N2 的类型成员是直接可用的,不需要完全限定名. (2)using 命名空间指令导入包含在给定命名空间中的类型,但要注意,它不导入嵌套的命名空间。示例:namespace N1.N2{ class A {}}namespace N3{ using N1; class B { public static void Main() { A a=new A(); //错误,N1.N2命名空间中的类型没有导入到命名空间N3中 } }}(3)using 命名空间指令导入的名称会被编译单元或命名空间体中具有相同名称的成员所隐藏。例如:namespace N1.N2{ class A {} class B {}}namespace N3{ using N1.N2; class A {}//N3.A} 在 N3 命名空间中的A类与N1.N2命名空间中的A类名称相同,则N1.N2.A被N3.A隐藏,A 引用 N3.A 而不是 N1.N2.A。(4)同一编译单元或命名空间体中的 using 命名空间指令导入多个命名空间时,如果它们所包含的类型中有重名的,则直接引用该名称就被认为是不明确的。示例:namespace N1{ class A {}}namespace N2{ class A {}}namespace N3{ using N1; using N2; class B { public static void Main() { A a=new A()// 错误A类明确,要使用完全限定名 } }} N1 和 N2 都包含一个成员 A,而由于 N3 将两者都导入,所以在 N3 中引用 A 会导致一个编译时错误名称冲突.using 别名指令用于为一个命名空间或类型指定一个别名。using 标识符 = 命名空间或类型名称 ; 例如:namespace N1.N2{ class A {}}namespace N3{ using A = N1.N2.A; class B: A {}}上面的示例中,在 N3 命名空间中,A 是 N1.N2.A 的别名,因此类 N3.B 从类 N1.N2.A 派生。通过为 N1.N2 创建别名 R 然后引用 R.A 可以得到同样的效果:namespace N3{ using R = N1.N2; class B: R.A {}}using 别名指令中的别名在直接包含该 using 别名指令的编译单元或命名空间的声明空间内必须是唯一的。例如:namespace N3{ class A {}}namespace N3{ using A = N1.N2.A; // 错误,命名冲突}上例中,N3 已包含了成员 A,因此 using 别名指令使用 A 作标识符会导致一个编译时错误。
更多文章:

excel中offset的用法(excel中offset函数如何使用)
2025年2月20日 02:50

marquee 参数(marquee 速度如何控制,说明白些,或者举个例子,)
2025年3月4日 00:10

audio接口在主板哪里(电脑前面的耳机插口,连到主板什么地方)
2025年2月18日 05:50

androbench下载(p10怎么使用androbench)
2025年3月13日 22:10

kubuntu和ubuntu(直接安装kubuntu和先装ubuntu再装个KDE桌面有什么区别)
2025年2月17日 04:10

webservice生成wsdl(delphi开发webservice IIS 配置不成功 wsdl在哪里生成)
2025年3月28日 18:20

include名词(当表示包括时,什么时候用include,什么时候用including)
2025年3月10日 09:10

springboot和springcloud区别(Spring boot与Spring cloud 是什么关系)
2025年4月2日 10:50

ignored xml validation warning(Eclipse打开xml文件报校验错误怎么解决)
2025年3月19日 18:50

roblox中文版下载(小飞象解说的Roblox在哪里下载)
2025年2月23日 22:30

沉默的羔羊原型(电影《沉默的羔羊》《华尔街》所使用的原型是 A.阿喀琉斯 B.康迪德 C.浮士德 D.俄耳浦斯)
2025年4月1日 23:40