c++:流与输入输出运算符的重载与

匿名 (未验证) 提交于 2019-12-02 23:38:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tonglin12138/article/details/91345106

写在前面:

问题:

解答:

c++输入输出运算符的重载

#include <iostream> using namespace std;   class Distance {    private:       int feet;             // 0 到无穷       int inches;           // 0 到 12    public:       // 所需的构造函数       Distance(){          feet = 0;          inches = 0;       }       Distance(int f, int i){          feet = f;          inches = i;       }       friend ostream &operator<<( ostream &output,                                         const Distance &D )       {           output << "F : " << D.feet << " I : " << D.inches;          return output;                   }         friend istream &operator>>( istream  &input, Distance &D )       {           input >> D.feet >> D.inches;          return input;                   } }; int main() {    Distance D1(11, 10), D2(5, 11), D3;      cout << "Enter the value of object : " << endl;    cin >> D3;    cout << "First Distance : " << D1 << endl;    cout << "Second Distance :" << D2 << endl;    cout << "Third Distance :" << D3 << endl;        return 0; }  


当上面的代码被编译和执行时,它会产生下列结果:

$./a.out Enter the value of object : 70 10 First Distance : F : 11 I : 10 Second Distance :F : 5 I : 11 Third Distance :F : 70 I : 10 


习惯上人们是使用 cin>> 和 cout<< 的,得使用友元函数来重载运算符,如果使用成员函数来重载会出现 d1<<cout; 这种不自然的代码。

下面这个实例展示了如果运用成员函数来重载会出现的情况d1<<cout;

#include <iostream> using namespace std;   class Distance {     private:         int feet;             // 0 到无穷         int inches;           // 0 到 12     public:         // 所需的构造函数         Distance(){             feet = 0;             inches = 0;         }         Distance(int f, int i){             feet = f;             inches = i;         }         ostream& operator<<( ostream & os)         {         os<<"英寸:"<<feet<<"\n英尺:"<<inches;         return os;     } }; int main () {     Distance d1(20,18);     d1<<cout;//相当于d1.operator<<(cout) }  

运行结果 :

英寸:20 英尺:18 
文章来源: https://blog.csdn.net/tonglin12138/article/details/91345106
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!