读书人

一路关于运算符重载的校园招聘笔试题

发布时间: 2012-09-24 13:49:41 作者: rapoo

一道关于运算符重载的校园招聘笔试题,求教大侠

C/C++ code
class X{public:    X& operator=(const X& rhs);    const X& operator+(const X& rhs)const;    const X& operator+(int m);private:    int n;};int main(){    X a,b,c;    //statements go here        return 0;}

问下面哪个选项的语句是不合法的?
1) a = b + 5;
2) a =a +5 +c;
3) (c=a+a)=b+c;
4) a = b+c+5;

真心不会,求教各位给出正确答案,最好指出错误选项为什么不合法?

[解决办法]
a = b+c+5;不合法
b+c会调用到const X& operator+(const X& rhs)const
返回值是const X &
而const X& operator+(int m);不是const成员函数

[解决办法]
探讨

a = b+c+5;不合法
b+c会调用到const X& operator+(const X& rhs)const
返回值是const X &
而const X& operator+(int m);不是const成员函数

读书人网 >C++

热点推荐