命名空间
使用目的: 对标识符的名称进行本地化,以避免命名冲突或名字污染(也就是可以把名字隔离起来)
定义命名空间? 需要使用一个关键字namespace,后面跟命名空间的名字,然后接一对{} 即可,{}中即为命名空间的成员。
注:
命名空间中的内容,既可以定义变量,也可以定义函数
命名空间可以嵌套
同一工程中允许存在多个相同名称的命名空间
如下所示:
namespace N1
{
int a;//定义变量
int Add(int left, int right)//定义函数
{
return left + right;
}
namespace N2 //在命名空间N1里,嵌套了命名空间N2
{
int b;
int Sub(int left, int right)
{
return left - right;
}
}
}
namespace N1 // 相同名称的命名空间N1,编译器最后会合成同一个命名空间中
{
int Mul(int left, int right)
{
return left*right;
}
}
命名空间的使用
1.加命名空间名称及作用域限定符(作用域限定符表示为 ::)
int main()
{
printf("%d\n", N::a);//命名空间为N
return 0;
}
2.用using将命名空间中成员引入
using N::b;//说明b是命名空间N里的成员
int main()
{
printf("%d\n",b);
}
3.使用using namespace命名空间名称引入
using namespace N;//这里先把空间内容省略
int main()
{
printf("%d\n", b);
}
std是C++标准库的命名空间,所以在使用时,我们可以直接用 *using namespace std;
C++输入&输出
简单介绍:输入用cin,输出用cout
cout
cout << "hello world" << endl;//输出hello world
cout << "hello world\n";
以上两种都可换行,在C++中,用前者较多
cin
cin >> a;//输出a
cin >> b >> c;//输出b c
- 要点:
- 1.使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含头文件以及std标准命名空间。
- 2.使用C++输入输出更方便,不需增加数据格式控制,比如:整形–%d,字符–%c
#include<iostream>
using namespace std;
int main()
{
int a;//整形
double b;//双精度浮点型
char c;//字符型
cin >> a;
cin >> b >> c;
cout << a << endl;
cout << b <<" " << c << endl;
return 0;
}
缺省参数
是声明或函数定义时为函数指定一个默认值。在调用该函数时,如果没有指定实参则采用默认值,否则使用指定的实参。(所以缺省参数就相当于一个备胎)
分类:全缺省参数、半缺省参数
全缺省参数:(所有参数都有参数值)
void TestFunc(int a = 10, int b = 20, int c = 30)//所有参数都有参数值
{
cout << "a= " << a << endl;
cout << "b= " << b << endl;
cout << "c= " << c << endl;
}
int main()
{
TestFunc();//没有传参时,使用默认的参数值
//传参时,使用指定的参数
TestFunc(1);// a=1,b=20,c=30
TestFunc(1, 2);//a=10,b=2,c=30
TestFunc(1, 2, 3);//a=1,b=2,c=3
return 0;
}
半缺省参数:只能从左往右缺省且连续且至少传一个参数
void TestFunc(int a, int b = 20, int c = 30)
{
cout << "a= " << a << endl;
cout << "b= " << b << endl;
cout << "c= " << c << endl;
}
int main()
{
//至少传一个参数
TestFunc(1);// a=1,b=20,c=30
TestFunc(1, 2);//a=10,b=2,c=30
TestFunc(1, 2, 3);//a=1,b=2,c=3
return 0;
}
- 注: 缺省参数不能在函数声明和定义中同时出现,否则就不能确定传参时用哪个缺省值了。