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[]에 저장할 뿐 값이 변경되어서 그 값이 함수가 끝나도 유지될 필요가 없기 때문입니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 7장 9번, 10번 (0) | 2019.04.17 |
---|---|
명품 C++ programming 실습문제 7장 7번, 8번 (0) | 2019.04.17 |
명품 C++ programming 실습문제 7장 5번 (0) | 2019.04.16 |
명품 C++ programming 실습문제 7장 3번, 4번 (0) | 2019.04.16 |
명품 C++ programming 실습문제 7장 2번 (0) | 2019.04.16 |