함수 오버로딩
c++에서는 함수 이름과 매개변수 타입 정보를 함께 사용해 구분하기 때문에 동일한 이름의 함수를 여러 개 정의할 수 있다.
Name mangling : 함수 이름 구분을 위해 내부적으로 고유한 이름을 부여하는 것
함수 오버로딩이 가능해지는 조건
- 매개변수 타입이 다른 경우
- 매개변수 개수가 다른 경우
함수 오버로딩이 되지 않는 경우
- 타입 변환이 가능한 매개변수로 두 개 이상의 오버로딩된 함수가 호출 후보가 되는 경우
- 디폴트 매개변수로 인해 함수 호출 형태가 중복되는 경우
- 매개변수의 타입만 포인터와 배열로 다른 경우
- 함수의 변환 타입만 다른 경우
함수 오버로딩 순서

템플릿
template <typename T>

타입에 관계없이 일반화된 코드를 작성하기 위한 문법
// 목적: 함수 템플릿을 이용해 두 값을 더하는 일반화된 함수 작성하기
#include <iostream>
using namespace std;
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
cout << add(3, 5) << endl; // 정수 더하기
cout << add(2.5, 4.1) << endl; // 실수 더하기
return 0;
}
// 출력결과:
// 8
// 6.6
배열을 템플릿 클래스로 구현
// 목적: 클래스 템플릿으로 배열을 일반화하여 원소 추가 및 삭제 기능 구현하기
#include <iostream>
using namespace std;
template <typename T>
class Array {
T data[100];
int size;
public:
Array() : size(0) {}
void add(const T& element) {
if(size < 100)
data[size++] = element;
}
void remove() {
if(size > 0)
size--;
}
void print() {
for(int i = 0; i < size; i++)
cout << data[i] << " ";
cout << endl;
}
};
int main() {
Array<int> arr; // 정수형 배열 생성
arr.add(10);
arr.add(20);
arr.add(30);
arr.print();
arr.remove();
arr.print();
return 0;
}
// 출력결과:
// 10 20 30
// 10 20
'내일배움캠프-언리얼' 카테고리의 다른 글
| [내일배움캠프 - 언리얼] DAY 17 - 객체지향적 설계 (0) | 2025.12.19 |
|---|---|
| [내일배움캠프 - 언리얼] DAY 16 - STL 기초 (0) | 2025.12.18 |
| [내일배움캠프 - 언리얼] DAY 14 - 메모리 관리하기 (0) | 2025.12.16 |
| [내일배움캠프 - 언리얼] DAY 13 - 간단한 직업(클래스) 만들기 - 2 (0) | 2025.12.15 |
| [내일배움캠프 - 언리얼] DAY 12 - 간단한 직업(클래스) 만들기 - 1 (0) | 2025.12.12 |