初识C++
命名空间
在学习C/C++过程中,变量、函数和类的名称都有他们的作用域,但这会产生很多很多冲突,使用命名空间的目的是对标识符的名称进行本地化,用来解决命名冲突的问题。通俗的来讲,命名空间实际上就是一个有名字的作用域,它是一种新的作用域。
命名空间的定义
- 命名空间中既可以定义变量,也可以定义函数
namespace Program1//Program1是命名空间的名称
{
int a;
int Swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
return x;
}
}
- 命名空间可以进行嵌套
namespace Program2
{
int a;
int Swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
return x;
}
namespace Program3
{
int b;
int Add(int x, int y)
{
return x + y;
}
}
}
- 同一个工程中可以存在多个相同名称的命名空间,最终编译器会将这些合并在同一个命名空间中。
总结:一个命名空间定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。
命名空间的使用
我们都知道C++是一门面向对象的语言,而在学习C语言时,它是一们面向过程的语言,两门课程虽有相似之处,却也有着很大的不同。
下面来看一段代码:
namespace Program
{
int a = 10;
int b = 30;
}
int main()
{
printf("%d\n", a);//出现编译错误
}
在这里我们发现在输入数据时出现了错误,下面介绍一下在C++中我们对于命名空间的使用.
命名空间的使用有三种方式:
1.加命名空间名称及作用域符
int main()
{
printf("%d", Program::a);
return 0;
}
当打印全局作用域中的变量使用 : :(作用域限定符),使用作用域限定符可以访问命名空间中定义的变量。
2.使用using将命名空间中成员引入
using Program::b;
int main()
{
printf("%d", Program::a);
printf("%d", b);
return 0;
}
片
using Program::b;这样就相当于定义了一个全局变量,这种情况适用于当前变量使用次数较多,在不冲突的前提下,可以将这种变量单独提出进行定义;
3.使用using namespace 命名空间名称引入
using namespace Program;
int main()
{
printf("%d", Program::a);
printf("%d", b);
return 0;
}
定义了当前文件的全局变量,优点是在命名空间中的成员可以直接在当前文件中直接使用,但它的缺陷是这样增加了产生冲突的概率。
C++输入&输出
在学习C语言时,我们学习的第一段代码是"Hello World!"
下面让我们看看在C++中是如何进行这句话的输出:
在C++中:
1.使用输出/输入流时,必须包括头文件< iostream>以及std标准命名空间。cout标准输出(控制台)和cin标准输入(键盘)
2.使用C++输出输出更加的方便,它不需要增加数据的格式