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はあなたの>(入力ストリーム)<はい、それから後ろ(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;
}

これはよくわかりますが、私たちは1つのouで名前をつけます(変更できます)、この時あなたはまだ知っています.これはouがcoutに相当して配列ですね.だから、出力するときはきれいですね.私たちのスペースは面倒です.あなたは直接#includeの中のsetw(2)でスペースを埋めることができます.ここに誤解があるのは、あなたのcoutとあなたのouがここで衝突していないことです.直接最後の時に戻ることができます.あなたは出力ストリームの中のオブジェクトなので、出力ストリームクラス、つまりreturn ouに戻るべきです.
コード:
#include 
#include 
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;
}