一个用Const可以避免的诡异bug

来源:互联网 发布:php语法手册 编辑:程序博客网 时间:2024/06/11 13:37

#include <iostream>
using namespace std;
class a{
private:
        int data;
public:
        a(int c)
        :data(c)
        {};
        void show(){cout<<data<<endl;};
        const   a operator*(const a & r);
        a operator=(const a & r);
};
const a a::operator*(const a & r) //如定义为a a::operator*(const a & r),则注释的部分可以编译通过。
{
        this->data = this->data * r.data;
        return *this;
};
a a::operator=(const a & r)
{
        this->data = r.data;
        return *this;
};

int main()
{      

        a l(3);
        a r(2);
        a s(1);
        s = l * r;
        s.show();
        l * r = s;//ok if there is not cont a operator*()
        return 0;
}

原创粉丝点击