ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 연산자 오버로딩
    C++ 2025. 3. 29. 22:18

    연산자 오버로딩은 객체 지향 프로그래밍에서 사용자 정의 타입(클래스, 구조체 등)에 기존의 연산자를 재정의하여 사용할 수 있게 하는 기능이다.

     

    #include "time.h"
    #include <iostream>
    using namespace std;
    
    Time::Time() {
    	hours = 0;
    	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 << "분: " << mins << endl;
    
    }

    func.cpp

     

    #ifndef TIMEH
    #define TIMEH
    
    class Time
    {
    private:
    	int hours;
    	int mins;
    
    public:
    	Time();
    	Time(int, int);
    	void addHours(int);
    	void addMins(int);
    	Time sum(Time&);
    	void show();
    	~Time();
    };
    #endif

    time.h 파일이다.

    #include <iostream>
    #include "time.h"
    using namespace std;
    
    int main() {
    	Time day1(1, 40);
    	Time day2(2, 30);
    
    	day1.show();
    	day2.show();
    
    	Time total;
    	total = day1.sum(day2);
    	total.show();
    
    	return 0;
    }

    main.cpp

    먼저 멤버변수로 시간을 나타내는 hours와 분을 나타내는 mins를 선언해주었다.

    기본생성자와 매개변수를 받는 Time생성자를 선언해주었다.

    day1이라는 객체를 만들어 1과 40일 넘겼다.

    day2라는 객체를 만들어 2와 30을 넘겼다.

    show함수까지 실행했을때의 결과가 다음과 같다.

    이후 day1 객체의 sum함수를 호출하여 day1과 day2의 시간을 합산한 새로운 Time객체를 반환한다.

    연산자 오버로딩은 여기서 sum대신에 operator+로 함수명을 바꾸면 덧셈을 할 수 있다는것이다.

    이를 통해 더 가독성좋은 코드를 만들 수 있다.

    'C++' 카테고리의 다른 글

    C++ public 다형 상속  (0) 2025.03.31
    C++ 상속  (0) 2025.03.30
    C++ 생성자와 소멸자  (0) 2025.03.29
    C++ 추상화와 클래스  (1) 2025.03.28
    C++ 분할 컴파일  (0) 2025.03.27
Designed by Tistory.