c++重载时,引用的作用
string operator + (string & str);
string & operator = (string & str);
以这两个语句为例,参数类型为引用与非引用的区别是什么呢? 返回值类型引用与非引用的区别是什么呢? 我试了一下,有无引用都可以正常运行呀! 这是怎回事?
c++?类?运算符?重载
[解决办法]
有无引用的确可以正常运行,主要涉及到一个效率问题。
参数类型为引用可以避免实体拷贝,即传入的就是实体本身,而不需要进行拷贝操作。
比如参数是一个类类型,那么如果不是引用传递,则会在参数传入的时候构造一个临时对象,并额外调用一次复制构造函数,而如果是引用传递则不需这些开销。
返回值为引用主要作用于“连续”操作,比如对"<<"的重载必须返回引用,这样才能使cout<<xx<<xx不报错,否则就不能进行连续输出流。
[解决办法]
为了实现链式表达式
[解决办法]