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 객체 반환
'C++ > C++ 문법' 카테고리의 다른 글
| C++ 다중 상속의 단점과 보완(컴포지션, 어그리게이션) (0) | 2025.10.14 |
|---|---|
| C++ 부모 클래스 접근 지정자, 프랜드(friend) (0) | 2025.10.14 |
| C++ 멤버 함수와 this 포인터 (0) | 2025.10.14 |
| C++ 생성자와 복사생성자, 소멸자 (0) | 2025.10.14 |
| C++ 다형성 개념과 다형성 구현 (팩토리 클래스, 오버라이딩) (0) | 2025.10.14 |