三个c++简单题目!寻求解答!要有详细的解释噢!

来源:百度知道 编辑:UC知道 时间:2024/05/30 19:32:21
1.已知在一个类体中包含以下函数原型:Date operator-(Date)const;下列关于这个函数的叙述中,错误的是:
A. 这是运算符-的重载运算符函数;
B. 这个函数所重载的运算符是一个一元运算符;
C. 这是个成员函数;
D. 这个函数不改变类的任何数据成员的值。
2.假设AB为一个类的类名,则该类的赋值操作符定义的原型是:
A. AB&operator=(AB& x);
B. AB operator=(AB& x);
C. AB=(const AB X);
D. AB&=(const AB X);
3.友元运算符obj1>bj2被c++编译器解释为:
A. operator>(obj1,obj2);
B. >(obj1,obj2);
C. Obj2.operator>(obj1);
D. Obj1.operator>(obj2);
记住!要有理由哈!越详细越好!!麻烦了!

我觉得答案是b a a
第一题:a对,c选项,因为括号里只有一个参数,所以应该是成员函数,d选项因为函数后加了const所以也对,错的是b;‘-’是二元重载运算符;
第二题:我觉得应该为 AB & operator=(const AB &x),选项中没有,那就应该选a吧,最接近!
第三题:因为它说是友元运算符,那么就不是成员函数了,所以就应该被编译为
operator>(obj1,obj2);
呵呵,解答完毕

1.B 2.B 3.A
1B:这个函数所重载的运算符是一个二元运算符;
2.最好是AB & operator=(const AB &x),但是选项中没有,可以选B,const AB &x只是强制在该函数中对象x的值不能改变,只要你改变它的值,编译就通不过,B中没有const,但是从这个函数的功能来说,它也不会改变对象x的值,所以这里也可以不加const,当然了,加了const,程序的可读性会更好
3.因为它说是友元运算符,那么就不是成员函数了,>是二元操作符,后面的()里面就必须是两个参数,而且>是操作符重载,必须要加operator