美文网首页
C++ 流插入和流提取运算符的重载

C++ 流插入和流提取运算符的重载

作者: 哪有岁月静好 | 来源:发表于2020-08-11 14:19 被阅读0次

    —****** 1******—

    << 运算符的重载

    C++ 在输出内容时,最常用的方式:

    std::cout << 1 <<"hello";
    

    提出问题:

    • 那这条语句为什么能成立呢?

    • cout 是什么?为什么 << 运算符能用在 cout 上呢?

    原因:

    • 实际上,cout 是在 iostream 头文件中定义的 ostream 类的对象。

    • << 能够用在 cout 上是因为,在 ostream 类对 << 进行了重载。

    对于如下这条语句:

    std::cout << 1 <<"hello";
    

    有可能按以下的方式重载成 ostream 类的成员函数:

    ostream & ostream::operator<<(int n)
    

    那么在使用流插入<<运算符时,等价于的形式如下:

    01 数据类型是int类型时:

    std::cout << 1;
    

    上面的语句,等价于:

    cout.operator<<(1);
    

    02 数据类型是字符串类型时:

    std::cout << "hello";
    

    上面的语句,等价于:

    cout.operator<<("hello");
    

    03 数据类型组合使用时:

    std::cout << 1 <<"hello";
    

    上面的语句,等价于:

    ( cout.operator<<(1) ).operator<<("hello");
    

    — —

    假定我们要想把某个对象里的内容进行打印输出,那么我们可以重载 ostream 类的流插入 << 运算符。

    下面以 CStudent 类作为例子:

    image

    输出结果:

    1,20,小林coding
    

    需要注意:

    ostream & operator<<(ostream & o, const CStudent & s)
    

    函数是全局的,所以函数的第一个参数必须要传入 ostream 的对象,并且 CStudent 类需要将此函数声明成友元函数,使得函数可以访问 CStudent 类的私有成员变量。


    —****** 2******—

    >> 运算符的重载

    还是以 CStudent 类作为例子,假设想通过键盘的输入的内容,来初始化对象,则我们可以重载 istream 类的流提取 >> 运算符。

    image

    输入内容和输出内容:

    // 输入内容:
    

    其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。



    相关文章

      网友评论

          本文标题:C++ 流插入和流提取运算符的重载

          本文链接:https://www.haomeiwen.com/subject/xyjjdktx.html