1.引用作为重载条件
#include<iostream>using namespace std;//1.引用作为重载的条件
//int 和 const int 类型不同,所以可以作用重载条件
void fn(int &a) //int &a=10;不合法
//10放在了常量区,而引用要么在栈区,要么在堆区{cout << "fn(int &a)调用" << endl;
}void fn(const int& a) {//这种const int &a=10,相当于创建了一个临时数据,让//让a指向这个临时数据cout << "fn(const int &a)调用" << endl;
}int main() {int a = 10;fn(a);//这种方式调用的是第一个fnfn(10);//这种方式调用的是第二个fnsystem("pause");return 0;
}
2.函数重载遇见函数默认参数。
#include<iostream>using namespace std;//2.函数重载碰到默认参数//这种时候两个函数满足重载的所有条件,void fn(int a,int b=10) {cout << "fn(int a) 的调用" << endl;
}void fn(int a) {cout << "fn(int a) 的调用" << endl;
}int main() {fn(10);//调用的时候编译器报错了。因为编译器发现调用这个东西//好像上面两个都符合条件,编译器傻了,不知道到底编译那个,所以报错。//专业描述:当函数重载碰到默认参数,会出现二义性,报错,所以要//尽量避免这种操作。system("pause");return 0;
}