1. 문제

 

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

 

(1) <<, >> 연산자 함수를 Matrix의 멤버 함수로 구현하라.

 

 

2. 결과

 

 

 

3. 코드

 


#include <iostream>
using namespace std;

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

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. 설명

 

  ">>" 연산자 함수는 Matrix 변수에 저장되어 있는 duo 배열의 각 원소들을 int형 배열 n[]의 각각 저장하도록 합니다.

 

"<<" 연산자는 int형 배열 n[]의 저장되어 있는 원소들을 duo 클래스 멤버 변수 duo배열의 각각 저장하도록 구현 합니다.

 

-> 배열이므로 참조 변수를 사용할 필요가 없습니다.

 

 


 

 

 

1. 문제

 

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

 

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

 

 

2. 결과

 

 

 

3. 코드

 


#include <iostream>
using namespace std;

class Matrix {
	int duo[4];
public :
	Matrix(int a=0, int b=0, int c=0, int d=0) {
		duo[0] = a; duo[1] = b;
		duo[2] = c; duo[3] = d;
	}
	friend void operator >>(Matrix a, int n[]);
	friend void operator << (Matrix &a, int n[]);
	void show() {
		cout << "Matrix = { ";
		for(int i=0; i<4; i++) {
				cout << duo[i] << ' ';
		}
		cout << '}' << endl;
	}
};
void operator >>(Matrix a, int n[]) {
		for(int i=0; i<4; i++)
			n[i] = a.duo[i];
	}
void operator << (Matrix &a, int n[]) {
		for(int i=0; i<4; i++)
			a.duo[i] = n[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();
}

 

 

4. 설명

 

 "<<" 연산자 함수를 구현할 시 Matrix &a로 참조 변수로 입력 받아야 합니다. 그러므로 함수가 끝난 후에도 변경된 값이 main함수에서 유지 됩니다.

 

 

">>"연산자 함수에서는 참조 변수를 사용하지 않은 이유는 Matrix의 멤버 변수 duo의 요소들을 int형 배열 n[]에 저장할 뿐 값이 변경되어서 그 값이 함수가 끝나도 유지될 필요가 없기 때문입니다.

 

+ Recent posts