关于c++提取符号“>>”的重载问题
2015-12-13 21:20
676 查看
发现这样一个问题,cin>>的重载程序可以运行,但是却直接结束了。。。
百思不得其解,,,
看了半天,终于发现了原因。。。
这里是原来的代码。。。
就是friend istream & operator>>(istream &in,const app &b);的原因。
因为用了const,所以导致了程序直接结束了。
正确做法是用 friend istream & operator>>(istream &in,app &b);
及去掉const,后面的实现部分也是如此。
这样,程序就可以正确的输入和输出了。
百思不得其解,,,
看了半天,终于发现了原因。。。
这里是原来的代码。。。
#include<iostream> using namespace std; class app{ public: app(int a=0){}; friend istream & operator>>(istream &in,const app &b); friend ostream & operator<<(ostream &in,const app &b); private: int x; }; istream & operator>>(istream &in,const app &b) { in>>b.x; return in; } ostream & operator<<(ostream &out,const app &b) { out<<b.x<<endl; return out; } void main() { app A; cin>>A; cout<<A; }
就是friend istream & operator>>(istream &in,const app &b);的原因。
因为用了const,所以导致了程序直接结束了。
正确做法是用 friend istream & operator>>(istream &in,app &b);
及去掉const,后面的实现部分也是如此。
这样,程序就可以正确的输入和输出了。
相关文章推荐
- C语言知识总结
- c语言总结
- g++编译c++文件
- C语言总结
- C语言中指针
- VC++ 6.0 中使用 MSComm.ocx
- STL中resize()和reserver()区别
- 【C语言探险】 第四课的第二部分:串
- Iterator(迭代器)设计模式
- C++ 类工厂实现动态对象创建
- C++设计模式
- C++模板简单介绍
- C语言中数据输出宽度是什么?
- 理解C语言——从小菜到大神的晋级之路(3)——C源程序的基本结构与调试方法
- c++_6 : 构造函数和析构函数
- next数组的理解
- c语言:1000瓶水,有一瓶是有毒的,现共有10只老鼠,怎么判断毒水?
- c++_5: 函数的特性
- C语言知识整理(2):volatile与register
- 《C++ primer》英文第五版阅读笔记(二十五)——函数基本知识