• c++ 学习之运算符重载 之 <<


    先看代码

    #define CRT_SECURE_NO_WARNINGS
    #include
    using namespace std;
    
    // 左移运算符重载
    
    class Person
    {
    public:
    
        int m_A;
        int m_B;
    };
    
    
    // 只能利用全局函数来重载左移运算符
    
    
    ostream &  operator<<(ostream &cout,Person & p)   // 本质 operator<< (cout , p )简化为 cout << p
    {
        cout << "m_A " << p.m_A << " m_B " << p.m_B ;
        return cout;
    }
    void test01()
    {
        Person p;
        p.m_A = 10;
        p.m_B = 10;
    
        cout << p << endl;
    
        //如果我想要换行呢
        // cout << p << endl;  这个是错误的,因为我们重载的 << 的返回值 为 void,无法对接上后面的 endl
    
    }
    
    int main()
    {
        
        test01();
        return 0;
    }
    
    • 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

    重载了左移运算符 << 以将自定义类型 Person 输出到标准输出流 cout。这是一个常见的C++技巧,允许你自定义类的输出方式。

    首先,让我们来逐步解释你的代码:

    #define CRT_SECURE_NO_WARNINGS
    #include
    using namespace std;
    
    class Person
    {
    public:
        int m_A;
        int m_B;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这部分定义了一个名为 Person 的类,该类有两个整数成员变量 m_A 和 m_B。

    接下来,你定义了一个全局函数来重载左移运算符 <<:

    ostream& operator<<(ostream& cout, Person& p)
    {
        cout << "m_A " << p.m_A << " m_B " << p.m_B ;
        return cout;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这个重载函数采用两个参数,第一个参数是一个 ostream 对象的引用,通常表示输出流(例如 cout),第二个参数是一个 Person 对象的引用,表示要输出的 Person 对象。

    在这个重载函数内部,你使用 cout 对象来输出 Person 对象的内容。在这里,你输出了 "m_A ",然后是 p 对象的 m_A 成员变量的值,然后是 " m_B ",然后是 p 对象的 m_B 成员变量的值。最后,你返回了 cout 对象,以支持连续的左移操作。

    接下来,你在 test01 函数中创建了一个 Person 对象 p 并打印它:

    void test01()
    {
        Person p;
        p.m_A = 10;
        p.m_B = 10;
    
        cout << p << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里,你可以看到如何使用重载后的左移运算符 << 来打印 Person 对象 p。这一行代码将 p 对象传递给 cout 对象,然后使用你定义的重载函数来打印 p 的内容。

    最后,在 main 函数中,你调用了 test01 函数来测试这个重载操作符的功能。

    总结:通过重载左移运算符 <<,你可以自定义输出类对象的格式,使其适应你的需求。这是C++中常用的技巧,用于提高代码的可读性和灵活性。

  • 相关阅读:
    20220725 自动控制原理中的补偿器
    游戏创业小知识:游戏运营的步骤和流程
    学习记忆——方法篇——记忆100内质数
    数据结构之堆,栈的实现
    asyncawait和promise的区别
    Dapr v1.9.0 版本已发布
    Jackson多态反序列化
    Eureka源码2-Eureka预备知识和核心类
    传输层协议:TCP/IP协议,UDP的协议
    Linux操作(查询日志)
  • 原文地址:https://blog.csdn.net/wniuniu_/article/details/133378495