- 반환 값에 상관없이 함수명이 동일하지만 인자값이 다른 함수를 오버로딩 했다고 한다.
- c++에서는 연산자도 오버로딩 된다.
- 상속 관계에 있어서 부모 함수를 자식이 재정의하고자 할 때,
함수프로토타입을 똑같이 선언한 함수를 오버라이딩 했다고 한다.
#pragma once
class matrix
{
private:
int arr[4][4];
public:
matrix operator+ (const matrix &a);
matrix operator- (const matrix &a);
matrix operator* (const matrix &a);
matrix operator= (const matrix &a);
void input();
void output();
};
#include <iostream>
#include "matrix.h"
using namespace std;
matrix matrix::operator+ (const matrix &a)
{
matrix result;
for(int i = 0; i<4; i++)
{
for(int j = 0; j<4; j++)
result.arr[i][j] = this->arr[i][j] + a.arr[i][j];
}
return result;
}
matrix matrix::operator- (const matrix &a)
{
matrix result;
for(int i = 0; i<4; i++)
{
for(int j = 0; j<4; j++)
result.arr[i][j] = this->arr[i][j] - a.arr[i][j];
}
return result;
}
matrix matrix::operator*(const matrix &a)
{
matrix result;
for(int i=0; i<4; i++)
{
for(int j=0; j<4; j++)
result.arr[i][j] = 0;
}
for(int l=0; l<4; l++)
{
for(int row=0; row<4; row++)
{
for(int col=0; col<4; col++)
{
result.arr[l][row] = result.arr[l][row] + this->arr[l][col] * a.arr[col][row];
}
}
}
return result;
}
matrix matrix::operator= (const matrix &a)
{
for(int i = 0; i<4; i++)
{
for(int j = 0; j<4; j++)
this->arr[i][j] = a.arr[i][j];
}
return *this;
}
void matrix::input()
{
cout<<"Input 4 x 4 Matrix : ";
for(int i =0; i <4; i++)
{
for(int j=0; j<4; j++)
cin>>arr[i][j];
}
}
void matrix::output()
{
for(int i =0; i <4; i++)
{
for(int j=0; j<4; j++)
{
cout.width(4);
cout<<arr[i][j];
}
cout<<endl;
}
cout<<endl;
}
#include <iostream>
#include "matrix.h"
using namespace std;
int main()
{
matrix m1,m2,m3;
m2.input();
m3.input();
m1=m2+m3;
cout<<"----- Addtion -----"<<endl;
m1.output();
m1=m2-m3;
cout<<"----- Subtraction -----"<<endl;
m1.output();
m1=m2*m3;
cout<<"----- Multiplication -----"<<endl;
m1.output();
return 0;
}