命名空间namespac
在学习编程语言的过程中,接触的类会越来越多,而这些变量和函数都存在于全局作用域中,会导致许多冲突。
命名空间的存在就是对标识符的名称进行本地化,以避免命名冲突。
例如c语言中👇
include<stdlib.h>
int rand=0;
int main()
{
//此处会因为lib头文件中包含了对rand的定义,而我们自己也定义了rand让程序懵了
//编译会报错
printf("%d",rand);
return 0;
}
C++中有函数局部域,全局域,命名空间域,类域。其中局部域和全局域会影响变量的声明周期,命名空间域和类域不影响变量的声明周期。
//命名空间的使用方法
//namespace 空格 命名
namespace zaoshanghao
{
int chilemanin=1;
}
//使用方法 (命名空间名字::变量名)
int main()
{
printf"%d",zaoshanghao::chilemanin);
}
using可以将命名空间展开,如果不少特指某成员展开的话直接使用是完全展开。
类似在平时使用C++的时候会敲:using namespace std;
就会把std命名空间中所有成员变量展开。
而c++有方法部分展开成员变量
namespcae zaoshanghuai
{int a=0;
int b=2;}
//当我们需要频繁需要命名空间中某个变量的时候
//可以部分展开变量成员。例如以下
using zaoshanghuai::a;
int main()
{
printf("%d",a);
printf("%d",a);
printf("%d",a);
printf("%d",zaoshanghuai::b);
}
输入输出流
iostream 是input output stream的缩写,是标准输入,输出流库。
std::cin是istrea类的对象,面向窄字符的标准输入流。
std::cout是ostrea类的对象,面向窄字符的标准输出流。
std::endl是一个函数,相当于插入一个换行字符。
以上都是在using namespace std展开可以使用的功能
缺省参数(默认参数)
缺省参数是声明或者定义函数的参数指定的一个缺省值,如果在调用这个函数的时候没有给定实参值的话,该函数会使用作为形参的缺省值。
缺省参数分为全缺省和半缺省,全部形参都给定值的叫全缺省,部分形参给定就是半缺省。
其中c++规定必须从左到右依次给定实参,不能跳跃给实参。
//全缺省
void ZaoCan(int a=10,int b=20,int c=100)
{
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;}
//半缺省
void WanCan(int a,int b=10,int c=200)
{
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
}
int main()
{
ZaoCan();
ZaoCan(1,2,3);
WanCan(1,2);
}