C++ 重载 数组对象输入输出流的实现!!!

简介: C++ 重载 数组对象输入输出流的实现!!!

C++ 重载 数组对象输入输出流的实现!!!

重载

一个对于c++学习者,必备的技能。简单的来说就是让一些符号依据他们使用对象的不同具有更多重的作用,那为什么说数组的重载呢?,那是因为一下输出多个数组,是不是有点不适应呢?小唐同学慢慢的来吧这个东西来将清楚!

输入输出流

你肯定看过头文件的 iostream 对吧

他的意思就是:输入输出流

然后就引出了

输入流

istream 不就可以和cin中的i,联系起来

输出流

ostream 不就可以和cout中的o,联系起来

!!!!!!!!!!!!!!!!重点来了

我们一般就直接在class里面的public来定义输入输出流的重载,公有嘛

public:
  friend istream & operator >> (istream&input, shuzu&A);//定义输入数组
  friend ostream & operator << (ostream&output, shuzu&A);//定义输出数组

friend,就是类的好朋友了,可以直接访问私有的数组元素了,也就是你的数组

然后你的输入输入流不就是前面提及过的istream(输入流),ostream(输出流),这个东西其实就相当于你的函数类型懂吗?
平时我们加法的重载不就是 int operator +(类型)仔细看你operator前面的类型,不就换了一下,int—>istream/ostream
因为你的 >>(输入流) <<(输出流)符号是属于输入输出流istream,ostream这一类型
好的,然后你看后面
(ostream&, shuzu&)
他就相当于直接用了ostream这个类,用了引用,后面的话就是来确定他的数组对象

ostream & operator << (ostream&ou, shuzu&A)
{
  for (int i = 1; i < 5; i++)
  {
    for (int j = 1; j < 5; j++)
      ou  << setw(2)<<A.a[i][j];
        cout << endl;
  }
  return ou;
}

这就不就很明白了,我们用一个ou来命名(可以更改的),这个时候你还要知道一点这是的ou就是相当于cout
然后是数组对吧,所以你应该,输出的时候好看一点对吧,我们空格太麻烦了,你可以直接用#include 里面的 setw(2)来填充空格,这里有个误区就是你的cout和你ou在这里并不冲突,可以直接用
最后的时候来返回,因为你是输出流里面的对象,所以你应该返回一个输出流类的,也就是return ou

代码:

#include <iostream>
#include <iomanip>
using namespace std;
class shuzu
{
  public:
  friend istream & operator >> (istream&, shuzu&);//定义输入数组
  friend ostream & operator << (ostream&, shuzu&);//定义输出数组
  private:
  int a[4][4];
};
istream & operator >> (istream&in, shuzu&A)
{
  for (int i = 1; i < 5; i++)
  for (int j = 1; j < 5; j++)
    in >> A.a[i][j];
  return in;
}
ostream & operator << (ostream&ou, shuzu&A)
{
  for (int i = 1; i < 5; i++)
  {
    for (int j = 1; j < 5; j++)
      ou  << setw(2)<<A.a[i][j];
        cout << endl;
  }
  return ou;
}
int main()
{
   shuzu A;
   cin>>A;
   cout<<A;
   return 0;
}


相关文章
|
2月前
|
编译器 C++
C++之类与对象(完结撒花篇)(上)
C++之类与对象(完结撒花篇)(上)
38 0
|
26天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
67 5
|
1月前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
70 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
80 4
|
2月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
30 4
|
2月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
26 4
|
2月前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
17 0
|
2月前
|
编译器 C++ 数据库管理
C++之类与对象(完结撒花篇)(下)
C++之类与对象(完结撒花篇)(下)
34 0
|
2月前
|
编译器 C++
C++之类与对象(3)(下)
C++之类与对象(3)(下)
36 0
|
2月前
|
编译器 C++
C++之类与对象(3)(上)
C++之类与对象(3)
19 0