본문 바로가기
C++/C++ 문법

C++ 오버로딩 (Overloading)

by Sein_ 2025. 10. 14.
728x90

[Do it C++ 완전정복_ 282~288p]

오버로딩 (Overloading)

함수 오버로딩

  • 같은 이름의 함수를 여러 개 정의하되, 매개변수의 형태를 다르게 하여 구분하는 기능
  • 하나의 이름으로 여러 기능을 수행할 수 있게 만드는 다형성의 한 형태다.
  • 반환형만 다르면 오버로딩이 불가하다.
#include <iostream>
using namespace std;

class Printer {
public:
    void print(int n) {
        cout << "정수 출력: " << n << endl;
    }

    void print(double d) {
        cout << "실수 출력: " << d << endl;
    }
};

int main() {
    Printer p;
    p.print(10);	// 정수 출력: 10
    p.print(3.14);	// 실수 출력: 3.14
}

 

연산자 오버로딩

  • 연산자를 객체에도 사용할 수 있도록 재정의하는 기능이다.
  • 사용자 정의 자료형(클래스)이 기본 자료형처럼 연산(+, -, ==, << 등) 을 수행할 수 있게 해준다.

연산자 오버로딩 예시

#include <iostream>
using namespace std;

class Point {
public:
    int x, y;

    Point(int a = 0, int b = 0) : x(a), y(b) {}

    // + 연산자 오버로딩
    Point operator+(const Point& p) {
        return Point(x + p.x, y + p.y);
    }
};

int main() {
    Point p1(2, 3);
    Point p2(4, 5);

    Point result = p1 + p2;   // == p1.operator+(p2)
    cout << result.x << ", " << result.y << endl;  // 출력: 6, 8
}

 

  • p1 + p2 → 내부적으로 p1.operator+(p2) 호출
  • 두 객체의 x, y를 더해 새로운 Point 객체 반환