欢迎大家来到IT世界,在知识的湖畔探索吧!
命名空间主要解决命名冲突的问题。命名空间可以存放类、对象、函数、变量、结构体等。假如要使用命名空间中的变量或者对象,那么使用using namespace来指定某个命名空间,释放该命名空间中所有的变量或对象等。如果不想将它们全部从命名空间中释放出来,而是只使用该空间中某个特定的变量,那么使用命名空间加作用域解析符::指定该变量。如:
#include<iostream>
using namespace std; // 释放std命名空间所有变量、函数等 namespace people { char name[10]="Jack"; } int main { cout << "name:" << people::name << endl; getchar; // 等待键盘输入字符 return 0; }
欢迎大家来到IT世界,在知识的湖畔探索吧!
关于全局变量和局部变量的使用,如:
欢迎大家来到IT世界,在知识的湖畔探索吧!#include<iostream> using namespace std; int x = 1; // 定义一个int型的全局变量x int main { int x = 2; // 定义一个int型的局部变量x cout << "输出全局变量:x=" << ::x << endl; // 引用全局变量时使用作用域解析符:: cout << "输出局部变量:x=" << x << endl; getchar; // 等待键盘输入字符 return 0; }
创建命名空间时需要注意一些细节:
(1)同一个命名空间可以多次重复创建,以扩充命名空间的内容。
#include<iostream> using namespace std; namespace people { char name[10] = "Jack"; } namespace people { int age = 18; } int main { cout << "name:" << people::name << endl; cout << "age:" << people::age << endl; getchar; // 等待键盘输入字符 return 0; }
(2)尽量在命名空间之外定义函数,命名空间内只做函数声明。这样做有两个好处:第一,保持命名空间的整洁性;第二,有利于将命名空间专门存放于头文件中,而将函数的定义部分存放于实现文件中。
欢迎大家来到IT世界,在知识的湖畔探索吧!#include<iostream> using namespace std; namespace func { void display; } int main { func::display; getchar; return 0; } void func::display { cout << "hello C++!!!" << endl; }
(3)命名空间中的成员都是公有的,不能将它们私有化。并且只能以创建命名空间的方式添加新成员,而不能像定义对象或使用限定符的方式定义新成员。以下几种情况是错误:
namespace func { private: void display{cout << "Hello OpenCV" << endl;} } func x; int func::x;
(4)一个命名空间可以嵌套在另一个命名空间。
如果只是想释放命名空间中的某些变量,可以这么做:
#include<iostream> using namespace std; namespace num1 { int x = 10; int y = 20; } namespace num2 { int x = 30; int y = 40; } int main { using num1::x; using num2::y; cout << "x=" << x << " y=" << y << endl; getchar; return 0; }
可以为命名空间取个别名,如:
namespace people { char name[10] = "Jack"; } namespace person = people;
招聘信息
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/33306.html