c++ 之运算符重载(<<,>>)

来源:互联网 发布:mac需要鼠标吗 编辑:程序博客网 时间:2024/06/06 00:08

期待了好久的《c++primer》终于在三天前邮到了,看到这本书时着实吓了一跳:怎么那么厚啊,700多页,跟个板砖似的。计划3个月内看完,一天10页左右,前面都是基本概念,自己暑假里也复习了一遍,可以翻的快一些,多留点精力看后面的。我这个计划做得不是太紧,能在三个月内完成,我就很高兴了,一开始不想给自己太大的压力。

看到书里一个例子,直接输入输出对象,运用了运算符重载的知识,自己试了一下,有点小感触。

#include <iostream>using namespace std;class book{    public:    book():price(0),num(0){}    book(int p,int n):price(p),num(n){}    friend istream& operator>>(istream& ist,book &b);    friend ostream& operator<<(ostream& ost,book b);    private:    int price;    int num;};istream& operator>>(istream& ist,book &b){//引用的优势在这里明显的显现出来,    cout<<"input price an num:";         //这个函数要改变对象的数据成员的值,直接传递对象是不能改变的    ist>>b.price>>b.num;                 //如果直接传递指针,那么在主函数中输入时候无法输入一个对象的地址,    return ist;                      //或许可以解决,但是现在还想不到解决的办法。}ostream& operator<<(ostream& ost,book b){    ost<<"the price is"<<b.price<<"and the num is"<<b.num<<endl;    return ost;}int main(){    book b(10,20);    cout<<b;    cin>>b;    cout<<b;    return 0;}