-
명품 C++ 7장 7번C++ 2018. 11. 3. 14:07
7. 2차원 행렬을 추상화한 Matrix 클래스를 활용하는 다음 코드가 있다.
int main() {Matrix a(4, 3, 2, 1), b;int x[4], y[4] = { 1,2,3,4 }; // 2차원 행렬의 4 개의 원소 값a >> x; // a의 각 원소를 배열 x에 복사, x[]는 {4,3,2,1}b << y; // 배여 y의 원소 값을 b의 각 원소에 설정for (int i = 0; i < 4; ++i) cout << x[i] << ' '; // x[] 출력cout << endl;b.show();}1) <<, >> 연산자 함수를 Matrix의 멤버 함수로 구현하라.
소스코드
#include <iostream>using namespace std;class Matrix {int x[4];public:Matrix() { for (int i = 0; i < 4; ++i) x[i] = 0; }Matrix(int x1, int x2, int x3, int x4) {x[0] = x1; x[1] = x2; x[2] = x3; x[3] = x4;}void show() {cout << "Matrix = { ";for (int i = 0; i < 4; ++i)cout << x[i] << ' ';cout << "}" << endl;}Matrix& operator>>(int x[]);Matrix& operator<<(int x[]);};Matrix& Matrix::operator>>(int x[]) {for (int i = 0; i < 4; ++i) x[i] = this->x[i];return *this;}Matrix& Matrix::operator<<(int x[]) {for (int i = 0; i < 4; ++i) this->x[i] = x[i];return *this;}int main() {Matrix a(4, 3, 2, 1), b;int x[4], y[4] = { 1,2,3,4 }; // 2차원 행렬의 4 개의 원소 값a >> x; // a의 각 원소를 배열 x에 복사, x[]는 {4,3,2,1}b << y; // 배여 y의 원소 값을 b의 각 원소에 설정for (int i = 0; i < 4; ++i) cout << x[i] << ' '; // x[] 출력cout << endl;b.show();}2) <<, >> 연산자 함수를 Matrix의 프렌드 함수로 구현하라.
소스코드
#include <iostream>using namespace std;class Matrix {int x[4];public:Matrix() { for (int i = 0; i < 4; ++i) x[i] = 0; }Matrix(int x1, int x2, int x3, int x4) {x[0] = x1; x[1] = x2; x[2] = x3; x[3] = x4;}void show() {cout << "Matrix = { ";for (int i = 0; i < 4; ++i)cout << x[i] << ' ';cout << "}" << endl;}friend Matrix& operator>>(Matrix &op,int x[]);friend Matrix& operator<<(Matrix &op,int x[]);};Matrix& operator>>(Matrix &op ,int x[]) {for (int i = 0; i < 4; ++i) x[i] = op.x[i];return op;}Matrix& operator<<(Matrix &op ,int x[]) {for (int i = 0; i < 4; ++i) op.x[i] = x[i];return op;}int main() {Matrix a(4, 3, 2, 1), b;int x[4], y[4] = { 1,2,3,4 }; // 2차원 행렬의 4 개의 원소 값a >> x; // a의 각 원소를 배열 x에 복사, x[]는 {4,3,2,1}b << y; // 배여 y의 원소 값을 b의 각 원소에 설정for (int i = 0; i < 4; ++i) cout << x[i] << ' '; // x[] 출력cout << endl;b.show();}실행결과
<< >> 연산에서는 참조를 리턴해야합니다.
'C++' 카테고리의 다른 글
명품 C++ 7장 9번 (0) 2018.11.03 명품 C++ 7장 8번 (0) 2018.11.03 명품 C++ 7장 6번 (0) 2018.11.03 명품 C++ 7장 5번 (0) 2018.11.03 명품 C++ 7장 1번 2번 3번 4번 (0) 2018.11.03