명품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();
}
오류 또는 수정 사항 궁금한 점 있으시면 댓글로 남겨주세요.
반응형