개념/c++
C++ 연산자 오버로딩
웅드
2023. 11. 18. 17:36
연산자 들에게 다중적인 의미를 부여하는 것이다.
c++은 피연산자의 개수 또는 데이터형을 판단하여 어떤 연산을 수행할지 결정하고 있다.
연산자 오버로딩을 사용자 정의 데이터형에 확장하는 방법을 알아보자
class Time{
private:
int hours;
int mins;
public:
Time();
Time(int, int);
void addHours(int);
void addMins(int);
Time sum(Time&);
void show();
~Time();
};
Time::Time(){
hours = mins = 0;
}
Time::Time(int h, int m){
hours = h;
mins = m;
}
void Time::addHours(int h){
hours += h;
};
void Time::addMins(int m){
mins += m;
hours += mins/60;
mins %=60;
};
Time Time::sum(Time& t){
Time sum;
sum.mins = mins + t.mins;
sum.hours = hours + t.hours;
sum.hours += sum.mins / 60;
sum.mins %= 60;
return sum;
}
void Time::show(){
cout << "시간 : " << hours << endl;
cout << "qns : " << mins << endl;
}
Time::~Time(){
}
int main(){
Time day1(1,40);
Time day2(2,30);
day1.show(); // 시간 : 1 , 분 : 40
day2.show(); // 시간 : 2 , 분 : 30
Time total;
total = day1.sum(day2);
total.show(); // 시간 : 4 , 분 : 10
아래와 같이 operator를 사용해 연산자 오버로딩이 가능하다
Time sum(Time&); -> Time operator+(Time&);
Time total
total = day1.sum(day2); -> total = day1.operator+(day2);
or
Time total2
total = day1.sum(day2); -> total2 = day1 + day2; //
반응형