运算符重载的问题(C++)

为什么在类内声明的时候可以写成operater+(const &lhs),而在类外的时候就要写成operater+(const &rhs,const &lhs)?

因为在类内定义运算符重载的时,运算符第一个操作数是类对象本身(通过this指针传递),而传入的参数是运算符的第二个操作数。
在类外定义运算重载时,需要同时把两个操作数作为参数传入。