类使用友元函数重载输入(>>),输出(<<),不使用成员函数
2013-04-16 15:13
483 查看
这篇文章,http://patmusing.blog.163.com/blog/static/135834960201001410555209/ ,很好的分析了为什么不使用成员函数来重载输入、输出符,而使用友元函数来重载输入、输出符。但是文章中有些错误,就是重载输入>>时,不能将类类型定以为const;而重载输出<<时,可以将其定义为类类型。代码如下:
如果在TestA类内定以为:
并且在函数外实现时也用了const,那么会报错。
#include<iostream> using namespace std; class TestA{ private: double a; double b; public: inline TestA():a(1),b(2){} inline TestA(int n,int c):a(n),b(c){} inline virtual ~TestA(){} friend istream& operator>>(istream&,TestA&); friend ostream& operator<<(ostream&,const TestA&); }; istream& operator>>(istream& in, TestA& test){ in >> test.a >> test.b; return in; } ostream& operator<<(ostream& out,const TestA& test){ out << test.a << " " << test.b << endl; return out; } int main(){ //TestA test1(); TestA test2(3,4); TestA test3; cin >> test3; cout << test2 << test3; return 0; }
如果在TestA类内定以为:
friend istream& operator>>(istream&,const TestA&);
并且在函数外实现时也用了const,那么会报错。
相关文章推荐
- 有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值
- 【c语言】有一函数:x < 0 ,y = -1;x = 0,y = 0;x > 0,y = 1,编程输入一个x值,要求输出对应的y
- C#中Stack<T>类的使用及部分成员函数的源码分析
- 使用ios的成员函数进行格式化输入和输出
- 4.有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值.
- c语言输入与输出库函数#include<stdio.h>
- 习题 4.6 有一个函数:y=x (x<1) y=2x-1 (1<=x<10) y=3x-11 (x>=10) 写程序,输入x的值,输出y相应的值。
- c语言:有一函数:当x<0,y=-1;x=0,y=0;x>0,y=1;编一程序,输入一个x值,要求输出相应的y值。
- error: 函数调用缺少参数列表;请使用“&BinTree<char>::_PrintNode”创建指向成员的指针
- c程序:有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值
- 编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 –> 12345,要求使用递归,并且函数体代码不超过8行
- 有一函数当x<0时,y=1.x>0时,y=3.x=0时,y=5.编程,输入x,输出y.
- C#中Stack<T>类的使用及部分成员函数的源代码分析
- c语言:有一函数:当x&lt;0,y=-1;x=0,y=0;x&gt;0,y=1;编一程序,输入一个x值,要求输出相应的y值。
- 在类外成员函数中进行输入排序和输出
- 九周任务二:定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 第九周任务四(建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。)
- python3下使用map()函数返回<map object at 0x00000000038327F0>导致不能直接使用的解决办法
- <s:iterator></s:iterator>循环指定输出,(status的方法使用)
- 9、流类库与输入/输出2.3输出文件流成员函数