函数重载
c++ pp page 227
1.函数重载的关键是函数的参数列表(函数特征标);如果两个函数的参数数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同。
仅返回类型不同的函数不能重载,重载的特征标必须不同。
2.编译器在检查函数特征标时,将把 一个类型的引用 和该类型本身视为同一个特征标。因此:
doubel cube(double x); double cube(double & x); ... cout<<cube(x)<<endl;
上述代码中参数x和 double x 的原型以及 double & x 的原型都匹配,因此编译器无法确定究竟应该使用哪个原型。
3.匹配参数时,要区分const 和非const变量。
指向const数据的指针形参可与const数据的和非const数据的地址参数匹配,因为将非const数据的地址指赋给指向const的指针是合法的。
这里注意,在c++ pp page 227的例子中,
void dabble(char * bits); ... const char p1[20] = "how are you?"; dabble(p1);
上述例子中,将 const char * 转换为 char * 类型是非法的,因为该例子将const数据的地址(p1)赋给了普通指针。