lesson2(补充)关于>>运算符和<<运算符重载

简介: lesson2(补充)关于>>运算符和<<运算符重载

前言:

cout和cin我们在使用时需要包含iostream头文件,我们可以知道的是cout是写在ostream类里的,cin是写在istream类里的,他们都是定义出的对象,而<< 和 >> 分别在他们的类里做了不同的运算符重载

接下来我们可以小小验证一下

class freedom
{
public:
  //初始化队列
  freedom()
    :_year(2023)
    ,_month(10)
    ,_day(28)
  {}
  ostream& operator<<(ostream& mycout)
  {
    mycout << "_year:>" << _year << endl;
    mycout << "_month:>" << _month << endl;
    mycout << "_day:>" << _day << endl;
    return mycout;
  }
  void print()
  {
    cout << "_year:>" << _year << endl;
    cout << "_month:>" << _month << endl;
    cout << "_day:>" << _day << endl;
  }
private:
  int _year;
  int _month;
  int _day;
};

在我们自定义的freedom类里,我们重载了<<,返回值类型为ostream&,参数我们准备传cout,这样我们使用mycout就相当于使用cout(尽管这很鸡肋,但我们只是为了验证)。

int main()
{
  // <<流插入运算符
  int a = 6;
  cout << a << endl;
  freedom b;
  //b是freedom类型的对象,重载了<<,参数类型为ostream(虽然看起来没啥用)
  b << (cout);
  b.operator<<(cout);
  //cout是ostream类型的对象,重载了<<,参数类型为int
  cout << 5 << endl;
  cout << (5) << endl;
  cout.operator<< (5) <<endl;
  //所以两者区别在于ostream这个类里实现了<<不同类型重载,而且定义出的
  //对象传隐藏参数this是ostream*类型的,也就有了位置去传内置类型
  //而我们自定义类型的this是freedom*类型,显式参数还传了ostream引用
  //想要模拟cout的实现,那么就会重命名,不会构成函数重载,所以我们大致
  //了解思路即可
  //ostream& operator<<(ostream& cout,int num)
  //{
  //  ...
  //  return cout;
  //}
  return 0;
}

运行截图如下:

目录
相关文章
|
存储 编译器 C++
【C++初阶】类与对象:6大默认成员函数------拷贝构造和赋值运算符重载
【C++初阶】类与对象:6大默认成员函数------拷贝构造和赋值运算符重载
59 0
|
8月前
|
算法 程序员 C++
【C++运算符重载】探究C++中的下标运算符[]重载
【C++运算符重载】探究C++中的下标运算符[]重载
88 0
|
8月前
|
安全 算法 编译器
【C++ 基础 ()和{}括号】深入探索 C++ 的变量初始化:括号和大括号的奥秘
【C++ 基础 ()和{}括号】深入探索 C++ 的变量初始化:括号和大括号的奥秘
527 0
|
8月前
|
算法 程序员 编译器
【C++ 运算符重载】C++中的运算符重载:深入探讨++和--运算符
【C++ 运算符重载】C++中的运算符重载:深入探讨++和--运算符
53 0
|
8月前
|
存储 Java 编译器
Java字符串变量声明与赋值的常见面试题——完整剖析
Java字符串变量声明与赋值的常见面试题——完整剖析
43 1
|
8月前
|
编译器
lesson2(补充)关于const成员函数
lesson2(补充)关于const成员函数
53 0
|
存储 编译器 Linux
【C语言初阶】带你轻松玩转所有常用操作符最终篇——下标引用、函数调用和结构体成员,表达式求值
【C语言初阶】带你轻松玩转所有常用操作符最终篇——下标引用、函数调用和结构体成员,表达式求值
180 0
C语言之运算符用法(补充前面运算符中的不足)
C语言之运算符用法(补充前面运算符中的不足)
|
缓存 JavaScript 前端开发
🍉一文讲明白Symbol数据类型
🍉一文讲明白Symbol数据类型
258 6
🍉一文讲明白Symbol数据类型

热门文章

最新文章

下一篇
开通oss服务