명품C++프로그래밍

명품 C++ Programming 실습문제 7장 7번

anycoding 2021. 5. 20. 20:24
반응형

문제

2차원 행렬을 추상화한 Matrix 클래스를 활용하는 다음 코드가 있다.

int main()
{
	Matrix a(4, 3, 2, 1), b;
	int x[4], y[4] = { 1,2,3,4 };
	a >> x;
	b << y;
	for (int i = 0; i < 4; i++)cout << x[i] << ' ';
	cout << endl;
	b.show();
}

 

결과

4 3 2 1

Matrix = { 1 2 3 4 }

 

1. <<, >> 연사자 함수를 Matrix 멤버 함수로 구현하라.

#include<iostream>
using namespace std;

class Matrix {
	int a[4];
public:
	Matrix() {};
	Matrix(int a, int b, int c, int d) {
		this->a[0] = a;
		this->a[1] = b;
		this->a[2] = c;
		this->a[3] = d;
	}
	void show();
	void operator>>(int x[]);
	void operator<<(int y[]);
};
void Matrix::show()
{
	cout << "Matrix = { " << a[0] << ' ' << a[1] << ' ' << a[2] << ' ' << a[3] << " }" << endl;
}
void Matrix::operator>>(int x[])
{
for(int i =0;i<4;i++)
	x[i] = a[i];
}
void Matrix::operator<<(int y[])
{
for(int i= 0 ;i<4;i++)
	a[i] = y[i];
}
int main()
{
	Matrix a(4, 3, 2, 1), b;
	int x[4], y[4] = { 1,2,3,4 };
	a >> x;
	b << y;
	for (int i = 0; i < 4; i++)cout << x[i] << ' ';
	cout << endl;
	b.show();
}

 

2. <<, >> 연산자 함수를 Matrix의 프렌드 함수로 구현하라.

#include<iostream>
using namespace std;

class Matrix {
	int a[4];
public:
	Matrix() {};
	Matrix(int a, int b, int c, int d) {
		this->a[0] = a;
		this->a[1] = b;
		this->a[2] = c;
		this->a[3] = d;
	}
	void show();
	friend void operator>>(Matrix a, int x[]);
	friend void operator<<(Matrix& b,int y[]);
};
void Matrix::show()
{
	cout << "Matrix = { " << a[0] << ' ' << a[1] << ' ' << a[2] << ' ' << a[3] << " }" << endl;
}
void operator>>(Matrix a,int x[])
{
	for (int i = 0; i < 4; i++)
		x[i] = a.a[i];
}
void operator<<(Matrix& b, int y[])
{
	for (int i = 0; i < 4; i++)
		b.a[i] = y[i];
}
int main()
{
	Matrix a(4, 3, 2, 1), b;
	int x[4], y[4] = { 1,2,3,4 };
	a >> x;
	b << y;
	for (int i = 0; i < 4; i++)cout << x[i] << ' ';
	cout << endl;
	b.show();
}

 

오류 또는 수정 사항 궁금한 점 있으시면 댓글로 남겨주세요.

반응형