在学习c++运算符重载时,需要对左移运算符进行重载,重载函数的声明如下:
void operator<<(ostream &cout,Person &p) //person是自定义数据类型
问题 为什么ostream 需要引用
输出流不能拷贝,也就是说要传入输出流对象的参数只能是地址传递,不能值传递,iostream不允许复制,所以采用的引用
引用的作用是为了节省内存?
实际上引用占内存空间。编译器在一般将其实现为const指针,即指向位置不可变的指针。即引用实际上与一般指针同样占用内存。
引用的作用是什么
c++之父说的是:直接原因是为了支持运算符重载
顺便提一句,既然C++引入了引用,那为什么C++不和Java一样抛弃指针呢?答:为了兼容C语言。
假设没有引用,那么,用指针来operator overloading操作。
A operator +(const A *a, const A *_a);
那么使用的时候,&a + &b,这样看起来是不是很难受。
除此之外,
用指针的使用经常犯得错:1,操作空指针,2,操作野指针,3,不知不觉改变了指针的值,而后还以为该指针正常。如果我们要正确的使用指针,我们不得不人为地保证这三个条件。而引用的提出就解决了这个问题。
引用区别于指针的特性是 :1,不存在空引用(保证不操作空指针),2,必须初始化(保证不是野指针),3,一个引用永远指向他初始化的那个对象(保证指针值不变)。
参考连接
为什么 C++ 有指针了还要引用? - Rogn - 博客园 (cnblogs.com)