#include<iostream.h>
class point{private:float x;
public:void f(float a){x=a;}
void f(){x=0;}
friend float max(point& a,point& b);
};
float max(point& a,point& b)
{return(a.x>b.x)?a.x:b.x;}

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


#include<iostream.h>
class point{private:float x;
public:void f(float a){x=a;}
void f(){x=0;}
friend float max(point& a,point& b);
};
float max(point& a,point& b)
{return(a.x>b.x)?a.x:b.x;}
main(){
point a,b;
a.f(2.2);b.f(3.3);
cout<<a.max(a,b);
}


【正确答案】:

COUT<<A.MAX(A,B);错误。

MAX()不是类的成员函数,不能用A.MAX()方式调用。


【题目解析】:

成员函数既可以在类体内定义,也可以在类体外定义。如果成员函数定义在类体外,则类体内必须要有函数原型,类体外函数定义的前面必须用“类名::”来限定。

a是类point的实例化, 类point定义的时候没有成员函数max()。


Top