一个比较让人郁闷的有关问题,看不懂

一个比较让人郁闷的问题,看不懂1.doublex0ffset()const这里最后的const在这里是什么意思啊?const本来不是

一个比较让人郁闷的问题,看不懂
1.double   x0ffset()   const

这里最后的const在这里是什么意思啊?const本来不是表示常量的意思嘛...

2.point   opertor+   (const   point&   d)const;

这里的最后面也带const,问题同上...最主要想问这里的opertor+   (const   point&   d)是什么意思呢,+号应该是双目操作符吧,但是括号里只有const   point&   d   这一个操作数啊...这是怎么回事呢?如何理解?

[解决办法]
2.point opertor+ (const point& d)const;
====================
单参数的话,说明操作符重载成了类的成员函数,这是后
有一个隐藏this,这个指针指向了主调对象,编译器内部解释成
operator+(const point* this, const point& d)const;
当然当不是const函数的时候,解释成
operator+(point* this,const point& d);
这样那不就是
双目的了嘛^_^

[解决办法]

成员函数后面的 const,表示该函数里面不会改变数据成员,也就是只是读取数据成员,但是没有
修改数据成员的操作.

const函数可以被const对象调用,显而易见,非const函数不能被const对象调用.

A const a;
a.x0ffset(); //ok
a.set();//error

其中, xoffset() 是const, 而set是非const函数.

值得一提的是, const 同名非 const函数构成重载,即使他们的参数一样,他们也是不同的两个
函数.
xoffset() const;
xoffset(); //ok,重载