初学c++の命名空间
来源:互联网 发布:51单片机项目外包网 编辑:程序博客网 时间:2024/06/01 09:05
1、命名空间:
(1)、概念
命名空间将全局作用域分成不同的部分
不同命名空间中的标识符可以同名而不会发生冲突
命名空间可以相互嵌套
全局作用域也叫默认命名空间
(2)、原因
一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突;
(3)、代码(从代码中看使用方法)
#include <stdio.h>// **namespace**是一个关键字,用来定义命名空间namespace NameA{ int a; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }//这个空间什么都可以包括,例如下边的结构体 struct A { };};int a;//全局变量aint main2_3(){ // 对命名空间中单个元素使用 using NameA::swap; int b = 20; int c = 30; swap(&b, &c); a = 90;//**这里是给全局变量赋值**,因为函数中并没有使用整个命名空间; return 0;}// 命名空间的使用,1、域解析符::int main2_1(){ a = 10; // 全局的a NameA::a = 20; // 使用命名空间 NameA中的变量a int b = 1; int c = 2; NameA::swap(&b , &c); printf ("b = %d, c = %d\n", b, c); return 0;}// 2、使用 using 关键字int main2_2(){ // 表明使用命名空间NameA中的内容 // 但凡在这个声明之后使用的变量或者函数等,只要没指明具体的命名空间 // 都将使用NameA中的内容 // using 有效范围是当前的大括号{} using namespace NameA; NameA::a = 100; // :: 不加前不加名字,代表使用默认的命名空间 ::a = 20; func(); printf ("a = %d, %d\n", NameA::a, ::a); int b = 10; int c = 20; // swap 没有指明命名空间 // 但是之前有了 using namespace NameA; 而 NameA中有 swaps swap (&b , &c); return 0;}
2、标准命名空间
(1)概念:
简单的说就是这个空间里边放了一些功能函数,调用之前需要声明std这个标准命名空间;声明的时候最好放在函数内部声明防止命名冲突
(2)代码:
// iostream C++控制台输入输出头文件#include <iostream>// 使用标准的命名空间,这边程序很短为了好看就放在函数外边;using namespace std;int main1_1(){ // cout 是标准输出,是一个类对象,在iostream里面定义 // 作用是向屏幕输出数据 // << 左移操作符,在这里被重载,意思是功能被重新定义 // 现在的功能是数据的流向,意思将数据从右边转移到左边 // << 支持连续操作 // endl 表示换行 std::cout << "C++ hello world" << ", adasdad" << std::endl; return 0;}
阅读全文
0 0
- 初学c++の命名空间
- C/C++:命名空间
- C++-namespace(命名空间)
- C++-namespace(命名空间)
- C++namespace命名空间
- C#.Net命名空间
- C++_命名空间
- C++namespace命名空间
- 【C++】命名空间
- [C++]namespace命名空间
- C\C++命名空间
- C++:命名空间(namespace)
- [c++]命名空间
- <C++>2.命名空间
- System.Drawing命名空间(初学)
- 初学schema---schema命名空间理解
- C语言命名空间详解
- C++Primer学习-命名空间
- hdu 4406 #最大费用流
- 拓扑序列_邻接矩阵实现(Topological sequence)
- Java中substring、split、StringTokenizer三种截取字符串方法的性能比较
- HDU OJ 2005 第几天?
- 洛谷 P3372 【模板】线段树 1
- 初学c++の命名空间
- 属性动画之☞valueanimator
- Linux下使用mysql遇到的问题
- C和C++中的名字空间和作用域
- 没有配置监听器,加载器,和加载文件类时怎么得到bean
- iOS 8苹方体使用说明
- POJ3280 Cheapest Palindrome (区间dp)
- Binary_Code 2-SAT神题
- 欢迎使用CSDN-markdown编辑器