一点关于类的问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:13:58
class Myclass
{public:

void Myclass(int a){x=a} //1 这句我知道错了
int f(int a,int b) //2
{x=a;y=b}
int f(int a,int b,int c=0)//3
{x=a;y=b;z=c;}
static void g(){x=10} //4

private:
int x,y,z;
};

答案说1234都错,不明白234哪错了,请降一下,谢谢~

我来回答你,1那里有两个错误,首先把void去掉,构造函数没有返回类型的,再者x=a之后加上分号“;”,2那里应该在y=b之后加上分号“;”,4那里有两个错误,首先去掉static,因为静态函数只能访问静态变量,再者x=10后面加上分号“;”,另外一个问题就是,2,3两个定义上不要用返回类型int,因为你根本没有返回类型,但是好象好点的编译软件对这个问题只能给出警告而不给出错误,再有就是两个函数f是属于多态的概念了,但是在定义多态的时候,f中设定了默认值的变量,这样在访问函数的时候就会出错的,要么你就把其中一个函数名字改掉,要么你就别用默认值,或者是你在修改下变量的个数或类型

还有2和3两个f函数返回值是int,但函数体中没有返回,要不就改为void,要不就返回一个值

3还有错误,不能定义默认值,否则当调用时f(3,6)时,系统不知道用个函数,因为第一函数调用格式f(a,b),第二个函数条用格式为f(a,b,c),还有用f(a,b),这时c的值默认为0.相当于f(a,b,0) 在机器上调试过了!