- 函数重载(重定义)
函数覆盖(重写)
函数符号的生成规则
C:函数名
C++:函数原型
- 返回值x
- 函数名x
- 函数形参v(1.参数个数2.参数类型3.参数顺序)给函数重载做了支持
重载的三要素:
- 同名
- 不同参
- 同作用域
所有内置类型系统会强制转换
2..引用:别名
指针和引用的区别
1)引用不是一个对象,而指针是对象
2)引用必须在定义时初始化,而指针可以不用,使得 指针的可以被赋值和拷贝,而引用不可以
引用底层以指针做支持
引用就是某一变量(目标)的别名,对引用的操作与对变量直接操作完全一样。
int a;
int &ra = a;//定义引用ra,它是变量a的引用,即别名
引用本身不占存储单元,系统也不给引用分配存储单元
对引用求地址,就是对目标变量求地址 &ra = &a
不能建立数组的引用
1.引用作为参数
void swap(int &p1, int &p2)//p1->a的别名 p2->b的别名 int* p1,int* p2
{
int p;
p = p1;
p1 = p2;
p2 = p;
}
int main()
{
int a, b;
cin >> a >> b;//10 20
swap(a, b);//swap(&a,&b);
cout << a << " " << b;//20 10
}
- 传递引用给函数与传递指针的效果是一样的
- 使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作。当参数传递的数据较大时,引用比用一般变量传递参数的效率和所占空间都好。
- 使用指针作为函数参数,在被调函数中同样要给形参分配内存
2.常引用
- 引用作为返回值
1)在内存中不产生返回值的副本
- 引用一定要初始化
- 引用不能 引用 不能取地址的变量
- 引用不能改变
- 引用变量 只能使用 引用变量 所有引用的数据