命名空间
主要是namespace关键字的使用,namespace所定义的空间可以定义变量,可以定义函数,主要是为了将标识符的名称进行本地化,避免名字污染和冲突。namespace可以定义内置类型也可以定义自定义类型 ,举例
namespace stu
{
int _age = 18;
char _name[] = "zhangsan";
int Add(int x, int y)
{
return x + y;
}
struct Stack
{
int* _a;
int _capacity;
int _size;
};
}
命名空间的引用主要有三种方式:
第一种是只引用其中的一个用 using(命名空间的名字)::(要引用的变量)例如
using stu::_age;
using stu::Add;
using stu::_name;
using stu::Stu;
第二种就是直接引用整个命名空间
using namespace stu;
第三种就是引来用,这里所打印的就是10.
namespace s
{
int a = 10;
}
int main()
{
cout << s::a << endl;
return 0;
}
缺省参数
缺省参数可分为全缺省和半缺省。
缺省参数就是在函数定义时给形参一个值,当不传参数进来时,就是用整个缺省参数,例如
int Add(int a= 1, int b = 1)
{
return a + b;
}
int main()
{
cout <<"Add(3,4) = "<< Add(3, 4) << endl;
cout <<"Add = "<< Add() << endl;
return 0;
}
函数重载
函数重载允许在相同函数名的条件下使用,但是有三个限制条件:1.参数类型不同2.参数个数不同3.参数顺序不同。为什么要满足这三个条件呢,为什么c语言不支持函数重载呢?
这里主要是因为c++中有独特的一套函数命名规则, 而c语言中没有,定义的是什么名字就是什么名字,具体可以Linux系统下面来看具体命名规则,我在这里不赘述。
int Add(int left, int right)
{
return left + right;
}
double Add(double left, double right)
{
return left + right;
}
int Add(int left, int right, int mid)
{
return left + right;
}
引用
引用主要是在同一块区域命另一个名字,共用同一块空间,引用的底层是通过指针来实现的, 引用要注意在定义的时候就要初始化,一个变量可有多个引用,一个引用一旦确定下来就不会有其他实体
int main()
{
int a = 10;
int& ra = a;
int& b = ra;//等于小名 怎样都可以找到他
int d = 9;
b = d;//此时就将a赋值为9
cout << "a = " << a << endl;
cout << "ra = " << ra << endl;
cout << "b = " << b << endl;
return 0;
}