#include<iostream>
using namespace std;
//1、参数数量不同
int ADD(int x=10, int y=20,int z=30)
{
return x + y+z;
}
int ADD(int x = 10, int y = 20,int z=30,int a=40)
{
return x + y+z+a;
}
//2、参数类型不同
int ADD(int x = 10, int y = 20)
{
return x + y ;
}
double ADD(double x = 10.11, double y = 20.11)//值得注意的是函数返回值不同不能作为函数重载条件
{
return x + y;
}
//3、参数顺序不同
int ADD(int x = 10, char y = 20)
{
return x+y ;
}
int ADD(char y= 20, int x = 10)
{
return x+y;
}
int main()
{
printf("%d\n", ADD(1, 2, 3,4));
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int a = 10;
//1、下面这行代码没有给ra初始化,会报错
//int& ra;
//2、下面这三行代码为我们讲述了一个变量可以有多个引用这一规则
//打个比方,张明在学校被同学起外号叫"鸡哥",在家被妈妈叫"小明"
//所以说张明可以拥有无数个外号,因为这些外号指向的都是他本人。
/*int a = 10;
int& ra = a;
int& rb = a;*/
//3、下面四行代码中第四行因为触犯了---引用一旦引用一个实体,再也不能引用其他实体这一规则。
//这就好比张明很瘦小,同学们给他叫细狗。然后有人把这一外号套给一个很胖的人,很明显这是不合适的。
int a = 10;
int b = 20;
int& ra = a;
int& ra = b;//报错
return 0;
}
#include<iostream>
using namespace std;
int main()
{
//下面属于权限放大,a被const限制住了(只能看不能改),而ra是a的引用,必须
//也使用const修辞才行,否则就是权限放大
/*const int a = 10;
int& ra = a;*/
//这是正确写法const int&ra=a;
//下面是对引用对象ra的权限缩小,初定义的时候a是可修改的
//ra被const修辞以后ra不能改了,只能看,但是a依旧可以修改
//因此对于引用对象来说权限只能小于或等于被引用的对象而不能大于
//就比如ra的权限只能小于或等于a,却不能大于a。
int a = 10;
const int& ra = a;
return 0;
}