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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/282334.html
標籤:其他
