#include < iostream. h>
class Class
{
public:
void print(int a,int b) {
cout< < ″int:″ < < a < < endl;
cout < < ″int:″ < < b < < endl;
}
void print(char * a,char * b) {

改错题:以下程序中有一处错误,请抄写有错误的语句并给出错误原因。


#include < iostream. h>
class Class
{
public:
void print(int a,int b) {
cout< < ″int:″ < < a < < endl;
cout < < ″int:″ < < b < < endl;
}
void print(char * a,char * b) {
cout< < ″string:″ < < a < < endl;
cout < <″ string:″ < < b < < endl;
}
void print(char * a,unsigned int b){
cout < < ″string:″ < < a < < endl;
cout < < ″int:″ < < b < < endl;
}
};
void main()
{
Class cls;
cls. print(10,20);
cls. print(′c′,1);
cls. print(′x′,′y′);
cls. print(″Hello!″,0);
}


【正确答案】:

CLS.PRINT("HELLO!",0);
不明确的重载函数调用,C++语言的编译器无法判断第二个值是空字符串NULL还是整数0


【题目解析】:

C++语言的编译器无法判断第二个值是空字符串NULL还是整数0,重载函数的定义和调用会涉及类型转换的细节问题,在涉及时要考虑全面。


Top