关于函数重载有一些细节需要注意:
函数重载的关键是参数列表(或称函数特征标)不同。请记住,是特征标,而不是返回类型使得函数进行重载。即,返回类型可以不同或相同,但特征标必需不同。
注意以下两个原型无法构成重载:
double cube (double x);
double cube (double & x);
从编译器角度考虑,当执行cout << cube(x)时,编译器无法确定究竟用哪一个原型。因此,编译器把类型引用和类型本身视为同一个特征标。
匹配函数时,并不区分const和非const变量。具体而言,如果某函数有用于const和非const参数的两种原型,则编译器会根据实参是否为const来决定使用哪个原型。如果某函数仅有const参数原型,则可以接受const和非const两种实参;如果某函数仅有非const参数原型,则只能接收非const实参。
新闻热点
疑难解答