目录
1、命名空间
在C/C++中会出现大量的变量,函数,起名字是一个很大的问题,为了防止命名重复,就出现了命名空间的概念,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突和名字污染
#include <stdio.h>
#include <stdlib.h>
int rand = 10;
// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决
int main()
{
printf("%d\n", rand);
return 0;
}
// 编译后报错:error C2365: “rand”: 重定义;以前的定义是“函数”
命名空间内可以定义变量,函数,也可以嵌套定义,使用命名空间有三种方式:
1.直接展开命名空间
using namespace ljp
ljp是命名空间的名字,自己可以随便起,要是有相同名字的命名空间,会合并成一个空间
2.使用using将命名空间中某个成员引入
using ljp::a
例如我引入的是一个int 类型的变量a,::是作用域限定符,
3.加命名空间和作用域限定符
ljp::a
这样就可以直接使用a变量了
2、C++的输入&输出
C++定义了新的输入和输出,输入是cin,输出是cout,但是使用时要展开C++官方的命名空间
using namespace std ,例如:
#include<iostream>
using namespace std;
int main()
{
int a = 10;
cin >> a;
cout << a << endl;
cout << "hello world" << endl;
return 0;
}
使用cin和cout输入输出非常方便,不需要控制格式了,cin和cout可以自动识别类型,关于更加复杂的知识我们后面了解,这里简单使用一下输入输出。
std命名空间的使用惯例:
1.在日常练习中建议直接展开using namespace std,这样比较方便。
2.using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 + using std::cout展开常用的库对象/类型等方式。
3、缺省参数
缺省参数的定义
缺省参数是声明或定义函数时为函数的参数指定一个缺省值,在调用这个函数时,如果实参没有指定的函数值,就采用该缺省参数。
第一个fun()函数,没有指定实参的值,则默认使用形参的缺省值,第二个fun()函数,实参是20,那么就用实参的值。
缺省参数的分类
全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
半缺省参数
void Func(int a, int b = 10, int c = 20)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
注意:
1.半缺省参数只能从右往左依次定义,不能间隔着给;
2.缺省参数不能在函数定义和声明中同时出现,最好是在函数声明中定义缺省参数