30.左移运算符重载

1.视频内容

程序1:

#pragma warning(disable:4996)
//2022年10月5日21:11:12
#include <iostream>
using namespace std;

class Maker
{
public:
    Maker(int id, string name)
    {
        this->id = id;
        this->name = name;
    }
public:
    int id;
    string name;
};

//1.形参和实参是一个对象
//2.不能改变库中的代码
//3.ostream中把拷贝构造私有化了
void operator<<(ostream &out, Maker &m)
{
    cout << m.id << " " << m.name << endl;
}

void test01()
{
    Maker m(10, "小花");
    cout << m;
}

int main()
{
    test01();
    system("pause");
    return EXIT_SUCCESS;
}

输出结果:

10 小花
请按任意键继续. . .


程序2:

#pragma warning(disable:4996)
//2022年10月5日21:11:12
#include <iostream>
using namespace std;

class Maker
{
public:
    Maker(int id, string name)
    {
        this->id = id;
        this->name = name;
    }
public:
    int id;
    string name;
};

//1.形参和实参是一个对象
//2.不能改变库中的代码
//3.ostream中把拷贝构造私有化了
//4.如果要和endl一起使用,那么必须返回ostream的对象
ostream &operator<<(ostream &out, Maker &m)
{
    cout << m.id << " " << m.name << endl;

    return out;
}

void test01()
{
    Maker m(10, "小花");
    cout << m;
    cout << endl;

    cout << 10;//内部重载了数据类型
}

int main()
{
    test01();
    system("pause");
    return EXIT_SUCCESS;
}

输出结果:

10 小花

10请按任意键继续. . .

2.左移和右移运算符重载(重点难点)

1.左移运算符重载

​ A.cout是对象,<<是左移运算符

​ B.重载左移运算符是为了直接打印对象

​ C.形参和实参是一个对象

​ D.不能改变库类中的代码

​ E.ostream中把拷贝构造函数私有化了

​ F.如果要和endl一起使用,那么必须返回ostream的对象.

posted @ 2022-10-05 22:22  CodeMagicianT  阅读(42)  评论(0编辑  收藏  举报