• 左移运算符重载(C++)


    左移运算符重载


    视频链接



    作用:可以输出自定义数据类型

    我们正常情况下无法输出自定义数据类型。这个时候就需要重载<<运算符
    在这里插入图片描述





    注意,通常不会用成员函数重载<<运算符,因为无法实现cout在左侧

    成员函数只有一个参数


    1.通常不会用成员函数重载左移运算符,首先如果这么写:void operator<<(Perosn &p),这是错误的,cout哪去了呢。


    2.而void operator<<(cout),调用时(本质:p.operator<<(cout))会变成p<



    只能通过全局函数重载左移运算符


    如何查找cout属于什么数据类型?点击cout,右键,选择转到定义

    在这里插入图片描述



    可以看到cout属于ostream类,也就是输出流对象
    在这里插入图片描述



    // 本质 operator<<(cout,p),简化cout<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26


    重载运算符还可以和友元相结合

    #include
    using namespace std;
    #include
    // 左移运算符重载
    // 作用:可以输出自定义数据类型
    class Person {
    // 友元,目的是让重载<<运算符的函数也可打印Person中的私有属性
    	friend ostream& operator<<(ostream& cout, Person& p);
    	friend void test01();
    private:
    	int m_A;
    	int m_B;
    	// 通常不会用成员函数重载左移运算符,因为不需要p.operator<<(p);这是错误的
    	// 而void operator<<(cout),会变成p<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    在这里插入图片描述

    总结:1.重载左移运算符配合友元可以实现输出自定义数据类型
    2.只能通过全局函数重载左移运算符
    3.cout属于ostream类,并且重载函数必须传入的是cout的引用,返回的也必须是引用。→
    ostream &(ostream &cout,Person p)。这样可以实现输出时无限追加内容。





  • 相关阅读:
    Android Navigation 过渡动画
    一种语音情感深度迁移识别算法
    HCM 初学 ( 二 ) - 信息类型
    从心灰意冷到自学Java3个月顺利拿到offer,多亏这份文档
    java基于quasar实现协程池【后篇】
    JdbcTemplate学习札记
    SpringSecurity授权
    化工机械基础试题及答案
    Java 语言实现简易版扫码登录
    习题:选择结构(二)
  • 原文地址:https://blog.csdn.net/weixin_53213086/article/details/126835339