练习6.52
void manip(int,int);
double dobj;
(a)
manip('a','z');
char提升成int,属于通过整型提升实现的匹配。
(b)
manip(55.4,dobj);
两个double类型的实参转换成(切除小数部分后)int,属于算术类型的转换。
练习6.53
(a)
int calc(int&,int&);
int calc(const int&,const int&);
第二条声明加了个顶层const,从普通引用变成常量引用。传入常量对象,第二个函数可行,传入非常量对象,选用第一个函数。
(b)
int calc(char*,char*);
int calc(const char*,const char*);
加了个底层的const,第二条声明的指针形参指向常量。如果实参是指向常量的指针,调用形参是const char*的函数;如果实参是指向非常量的指针,调用形参是普通指针的函数。
©
int calc(char*,char*);
int calc(char* const, char* const);
第二条声明中的形参加了个顶层const,一个拥有顶层const的形参无法和另一个没有顶层const的形参区分开,因此第二条语句算是重复声明了int calc(char*,char*)。