目录
一、命名空间
在C/C++中,变量和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多的冲突。
使用命名空间的目的就是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是为了解决这种问题。
1.命名空间定义
定义命名空间需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。
---命名空间中的内容,既可以定义变量,也可以定义函数。
---命名空间可以嵌套
---同一个工程中,允许存在多个相同名称的命名空间,编译器最后会将这些命名空间合成同一个命名空间。
注:不能存在名字相同的成员。
比如将第二个N2中的变量cur名字改为a,编译器就会报错重定义。
注:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。
2.命名空间的使用
当我们定义了命名空间后,有三种方式来使用命名空间中的内容。
1.加命名空间名称和作用域限定符‘::’
2.使用using将命名空间中的成员引入
注:因为此时的num相当于全局变量,如果我们再在全局中定义一个变量num,那么编译器将报错重定义。
3.使用using namespace命名空间名称引入
二、输入&输出
1.C++输出Hello world!。
2.标准输入输出
C++的标准输出为cout,标准输入为cin,在使用时,必须先包含<iostream>头文件以及std标准命名空间。
相比于C语言,C++输入输出更加方便,不需要增加数据格式控制,比如:整形---%d,字符型---%c等
例:
三、缺省参数
1.缺省参数概念
缺省参数是声明或定义函数时,为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
2.缺省参数分类
2.1全缺省参数
即所有参数都有默认值。
例如上图中的TestFunc函数。
2.2半缺省参数
即并不是每个参数都有默认值。
例:
void TestFunc1(int a, int b = 100, int c = 1000) {
cout << a << ' ' << b << ' ' << c << endl;
}
注意:
1.半缺省参数必须从右往左依次来给出,不能间隔着给。
2.缺省参数不能在函数声明和定义中同时出现。
void TestFunc2(int a = 1, int b = 2, int c = 3);
int main() {
TestFunc();
TestFunc(1, 2, 3);
TestFunc(1, 2);
TestFunc(1);
return 0;
}
void TestFunc2(int a = 1, int b = 2, int c = 3) {
}
只需在其中一个位置给出即可。
3.缺省值必须是常量或者全局变量。
4.C语言不支持(编译器不支持)。