c++ operator<<的参数的const与非const的区别

  1. friend ostream& operator<<(ostream& os,mystring& str);
  2. friend ostream& operator<<(ostream& os,const mystring& str); 我遇到的问题是用1的写法调用cout<<str1+str2<<endl时会出错。而用2的写法就没有问题,并且两种写法在调用cout<<str<<endl;都没有问题。这个const在这儿除了表明不能改变str的内容外,还有什么作用?

对于一些函数中的指针参数,如果在函数中只读,请将其用const修饰,
这样,别人一读到你的函数接口时,就会知道你的意图是这个参数是[in],
如果没有const时,参数表示[in/out],注意函数接口中的const使用,利于程序的维护和避免犯一些错误。

猜测是mystring类的operator+()函数返回值类型有问题。愚见