c++中运算符(尀" << 尀")重载ostream&是什么意思

friend ostream & operator + (ostream &os, const CPolynomial&); 为什么一定要加这个
2025-03-06 23:13:24
推荐回答(3个)
回答1:

运算符重载,是对现有操作符使用于自定义用户类型的一种扩展,但具体的性质不能变,如<<表示流操作符左侧对象为流的本质不能变,+为两元操作符本质不能变,再如,对于->重载必须返回指针类型不可变!
即,即使进行运算符重载,也只是有限自由!
friend ostream & operator << (ostream &os, const CPolynomial&)
operator是进行运算符重载的关键词,它后面就是重载的运算符,左侧是流,右侧是流处理的对象。这样你就可以处理如何输入或输出该对象

回答2:

如果没猜错,ostream是个类
ostream&的意思是返回值是类的一个引用,就是直接对返回的类的对象进行操作(共享一个地址,加这个就是可以对形参进行修改
后面的ostream &os就是传递一个类的对象的地址

回答3:

friend ostream &operator<< (ostream &out, Complex &obj){...}

以上文为例:

  1. “friend”声明函数为“ostream”类的友元函数

  2. “ostream”声明后文的函数为“ostream”类

  3. “operator<<(ostream &out, Complex &obj)”意为对双目流运算符“<<”进行重载,对象为“ostream”类的out的引用与“Complex”类的obj的引用

  4. “&operator<< (ostream &out, Complex &obj)”意为函数“&operator<< (ostream &out, Complex &obj)”的返回值以引用的形式返回

“ostream”类是一种特殊的类,需要作为“左值”,不能直接赋值或者拷贝(即以一个会被释放的临时变量返回),上文的函数执行完后(执行语句省略了)将以一个“ostream”类对象的引用返回,才符合“ostream”类的要求。