C++中重载流运算符的疑问
C++中重载流运算符 >> 形式如下: istream & operator >>(istream &,自定义类 &)我的疑问是: 1. 第一个符号 & 表示的什么意思啊?是引用吗?为什么要引用呢?
2.我知道其他两个& 是引用的意思,可是问什么要引用呢?不引用,直接定义对象不行吗?为什么?
我刚学C++,对很多概念掌握不深,不想死记形式,况且我也觉得这种形式很奇怪,希望高手帮忙解释一下.谢谢啦
追问:第二个解释我懂了.只是第一个解释还有点儿疑惑,就是为什么istream后面要加一个&,在这里引用与否和实现链式表达式有什么关系呢?我还是不太理解,希望能详细一点.因为第一个 & 我总是忘写,所以想知道他的具体作用.谢谢啦
答案:1.是引用,返回类型设为引用是为了实现链式表达式。如 stream >> a >> b >> c。2.首先你要知道引用只是某一个对象的别名,在参数中使用引用,是为了提高程序的执行效率。如果不使用引用的话,在实参传递到形参的过程中,会有一次数据拷贝的过程。如果你的参数是一个非常庞大的数据结构,那么在传参的时候,效率就会非常低,也会造成不必要的内存消耗。使用引用的话,就可以避免数据拷贝的过程,从而提高效率。另外,在参数中使用引用,还可以将参数变成输出参数。
istream后面加个&的意思:如cin>>a;"cin"这个对象就会使用到">>"重载,而如果istream后面不加个&,那istream会创建一个新的对象来接收istream & operator >>(istream &,自定义类 &)函数返回的istream对象,这样就会调用到istream的复制构造函数,就会消耗没必要的内存,而使用引用,返回的将是返回值的别名,从而提高程序的运行效率
上一个:C或C++解决约瑟夫换问题
下一个:求一个课程设计(C++编程的)