c++命名空间(namespace)
namespace name — c++命名空间 本质的定义一个域 (只能在全局定义, 也可以嵌套定义)
{
int rand = 10;
}
:: 域作用限定符(如果不加就是默认查找全局)
例如: nama :: rand —查找name域中的值
c++中的域有 函数局部域, 全局域, 命名空间域, 类域
项目工程文件中定义的同名namespace会认为是一个namespace,不会冲突
c++的标准库放在一个叫std的命名空间中
c++输入&输出
是Input Output Stream 缩写 是标准的输入,输出流库,定义了标准的输入,输出对象
std:cin 是istream类的对象 ,主要面向窄字符的标准输入流
std:cout 是ostream类的对象,它主要面向窄字符的标准输出流
<<是流插入的运算符,>>是流提取的运算符
- endl可理解为换行(\n)
使用c++输入输出更方便, 不需要向printf和scanf时那样手动指定格式, c++的输入输出可以自动识别变量类型,
*最重要的是c++流能更好的支持自定义类型对象的输入输出
例如:
cout<<'a'<<' '<<'b'<<endl
输出得a b (换行)
缺省参数
缺省参数是指声明或定义函数时为函数的参数指定一个缺省值. 在调用该函数时,如果没有指定实参则采用形参的缺省值
否则使用指定的实参
缺省参数分为 全缺省 和 半缺省
全缺省: 就是全部形参给缺省值.
int* swap(int a=5,int b=6)
{...}
半缺省值: 就是部分形参给缺省值.
int* swap(int a,int b, int c=6)
{...}
c++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值
带缺省参数的函数调佣时,c++规定必须从左往右依次给实参,不能跳跃给实参
函数声明和定义分离时, 缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值
函数重载
c++支持在同一作用域出现同名函数,但要求这些同名函数的形参不同,可以是参数个数不同或者类型不同. 这样c++函数调用就表现出了多态行为更加灵活
(c语言不支持同一作用域中通知出现同名函数)
int add(int a, int b)
{...}
int add(double a, double b)
{...}
引用
引用不是新定义一个变量,而是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,
它和它引用的变量共用同一块内存空间
int a=9;
int& b=a;
int& c=a;
int& d=b;
(其中b,c,d指定其实都是a)