개념/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; //

 

 

반응형