在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C++的流插入运算符“<<”和流提取运算符“>>”是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类istream和输出流类ostream。cin和cout分别是istream类和ostream类的对象。在类库提供的头文件中已经对“<<”和“>>”进行了重载,使之作为流插入运算符和流提取运算符,能用来输出和输入C++标准类型的数据。因此,凡是用“cout<<”和“cin>>”对标准类型数据进行输入输出的,都要用#include 把头文件包含到本程序文件中。 重载流插入运算符“<<”在程序中,人们希望能用插入运算符“<<”来输出用户自己声明的类的对象的信息,这就需要重载流插入运算符“<<”。 用重载的“<<”输出复数 #include <iostream> using namespace std; class Complex { public: Complex( ){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator + (Complex &c2); //运算符“+”重载为成员函数 friend ostream& operator << (ostream&,Complex&); //运算符“<<”重载为友元函数 private: double real; double imag; }; Complex Complex::operator + (Complex &c2)//定义运算符“+”重载函数 { return Complex(real+c2.real,imag+c2.imag); } ostream& operator << (ostream& output,Complex& c) //定义运算符“<<”重载函数 { output<<"("<<c.real<<"+"<<c.imag<<"i)"<<endl; return output; } int main( ) { Complex c1(2,4),c2(6,10),c3; c3=c1+c2; cout<<c3; return 0; } 运行结果如下: 运行结果为: (8+14i) 可以看到在对运算符“<<”重载后,在程序中用“<<”不仅能输出标准类型数据,而且可以输出用户自己定义的类对象。用“cout<<c3”即能以复数形式输出复数对象c3的值。形式直观,可读性好,易于使用。 重载流提取运算符“>>”C++预定义的运算符“>>”的作用是从一个输入流中提取数据,如“cin>>i;”表示从输入流中提取一个整数赋给变量i(假设已定义i为int型)。重载流提取运算符的目的是希望将“>>”用于输入自定义类型的对象的信息。 增加重载流提取运算符“>>”,用“cin>>”输入复数,用“cout<<”输出复数。 #include <iostream> using namespace std; class Complex { public: friend ostream& operator << (ostream&,Complex&); //声明重载运算符“<<” friend istream& operator >> (istream&,Complex&); //声明重载运算符“>>” private: double real; double imag; }; ostream& operator << (ostream& output,Complex& c) { output<<"("<<c.real; if(c.imag>=0) output<<"+";//虚部为正数时,在虚部前加“+”号 output<<c.imag<<"i)"<<endl; //虚部为负数时,在虚部前不加“+”号 return output; } istream& operator >> (istream& input,Complex& c) //定义重载运算符“>>” { cout<<"input real part and imaginary part of complex number:"; input>>c.real>>c.imag; return input; } int main( ) { Complex c1,c2; cin>>c1>>c2; cout<<"c1="<<c1<<endl; cout<<"c2="<<c2<<endl; return 0; } 可以看到,在C++中,运算符重载是很重要的、很有实用意义的。它使类的设计更加丰富多彩,扩大了类的功能和使用范围,使程序易于理解,易于对对象进行操作,它体现了为用户着想、方便用户使用的思想。有了运算符重载,在声明了类之后,人们就可以像使用标准类型一样来使用自己声明的类。类的声明往往是一劳永逸的,有了好的类,用户在程序中就不必定义许多成员函数去完成某些运算和输入输出的功能,使主函数更加简单易读。好的运算符重载能体现面向对象程序设计思想。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论