ostream

本文详细介绍了C++中运算符<<和>>的重载方法,解释了为何需要将这些运算符重载为全局函数而非成员函数,并通过实例演示了如何实现对复数类的运算符重载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

signal(SIGINT ,SIG_ING);
//SIG_ING代表忽略SIGINT信号,SIGINT信号代表由InterruptKey产生,通常是CTRL +C 或者是DELETE。发送给所有ForeGround Group的进程

SIGHUP发送给具有Terminal的ControllingProcess,当terminal被disconnect时候发送SIGPIPE在reader中止之后写Pipe的时候发送



C++运算符重载(11) - 重载<<和>>操作符

运算符 “<<” 用于流输出,而运算符“>>”用于流输出。

在开始重载这些操作符之前,必须注意下面的事项:
1) cout是输出类的对象,而cin是输入类的对象
2) 这些操作符必须重载为全局函数。如果想要让它们可以访问私有成员,则必须定义为友元。

为何必须重载为全局函数?
如果操作符重载为一个成员函数,则它必须是对象的成员,且出现在操作符的左侧。
例如,考虑表达式 “ob1 + ob2″ (假设ob1和ob2是两个不同类的对象)。为了编译通过,需要在类'ob1'中重载'+'运算符,或者使得'+'是一个全局函数。
运算符‘<<'和 '<<'的调用方式一般为'cout << ob1'和'cin << ob1'. 所以如果将它们做为一个成员函数,并且对象能出现在操作符的右侧,则我们需要将ob1和ob2定义为ostream类和istream类的成员。显然这是不太现实的。因此, 一般将这些操作符重载为接收两个参数的全局函数,其中一个参数为cout, 另一个为自定义类的对象。

下面程序演示了运算符 << 和 >> 的重载。

  1. #include <iostream>  
  2. using namespace std;  
  3.    
  4. class Complex  
  5. {  
  6. private:  
  7.     int real, imag;  
  8. public:  
  9.     Complex(int r = 0, int i =0)  
  10.     {  real = r;   imag = i; }  
  11.     friend ostream & operator << (ostream &out, const Complex &c);  
  12.     friend istream & operator >> (istream &in,  Complex &c);  
  13. };  
  14.    
  15. ostream & operator << (ostream &out, const Complex &c)  
  16. {  
  17.     out << c.real;  
  18.     out << "+i" << c.imag << endl;  
  19.     return out;  
  20. }  
  21.    
  22. istream & operator >> (istream &in,  Complex &c)  
  23. {  
  24.     cout << "Enter Real Part ";  
  25.     in >> c.real;  
  26.     cout << "Enter Imaginary Part ";  
  27.     in >> c.imag;  
  28.     return in;  
  29. }  
  30.    
  31. int main()  
  32. {  
  33.    Complex c1;  
  34.    cin >> c1;  
  35.    cout << "The complex object is ";  
  36.    cout << c1;  
  37.    return 0;  
  38. }  
输出:
Enter Real Part 10
Enter Imaginary Part 20
The complex object is 10+i20
ostream是output stream的简称,即输出流。
在C++中用来输出。
一个典型的输出流对象就是在C++中标准输出流cout。
在C++中,很少自定义ostream的对象,更多的是直接使用cout。

ostream这个类型,往往出现在<<操作重载中,作为某个类的友元函数出现。
比如对于class A, 可以定义
ostream & operator << (ostream &os, const A& a);
这样在调用A的对象var时,
cout << var ;
就等同于调用这个函数了。
函数里面一般会输出A中的一些成员变量。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值