1. 함수 오버로딩
객체지향의 다형성 중 하나인 함수로딩은 동일한 이름으로 여러 개의 함수를 정의할 수 있다.
int add(int a, int b)
{
return a + b;
}
float add(float a, float b)
{
return a + b;
}
2. 함수 오버로딩의 조건
2-1. 매개 변수 타입이 달라야 한다.
void Func(int a)
{
// ...
}
void Func(float a)
{
// ...
}
2-2. 매개 변수의 개수가 달라야 한다.
void Func(int a)
{
// ...
}
void Func(int a, int b)
{
// ...
}
3. 템플릿
템플릿은 사용되는 타입만 다르며 동일한 기능을 수행하는 함수 또는 클래스를 일반화할 수 있다.
예를들어, 다양한 재료를 담을 수 있는 상자와 동일하다.
#include <iostream>
#include <string>
template <typename T>
class Box {
public:
T item; // 상자 안에 담을 아이템
};
int main() {
// 정수 아이템을 담는 상자
Box<int> intBox;
intBox.item = 42;
std::cout << "Integer Box contains: " << intBox.getItem() << std::endl;
// 문자열 아이템을 담는 상자
Box<std::string> stringBox;
stringBox.item = "Hello, Templates!";
std::cout << "String Box contains: " << stringBox.getItem() << std::endl;
// 실수 아이템을 담는 상자
Box<double> doubleBox;
doubleBox.item = 3.14159;
std::cout << "Double Box contains: " << doubleBox.getItem() << std::endl;
return 0;
}
3-1. 함수 템플릿
template <typename T>
void swap(T* a, T* b)
{
T temp = *a;
*a = *b;
*b = temp;
}
3-2. 클래스 템플릿
template <typename T>
class A {
private:
T* array;
}'C++ > Basic' 카테고리의 다른 글
| [C++] 스마트 포인터 (1) | 2024.12.26 |
|---|---|
| [C++] 객체지향 프로그래밍 (0) | 2024.12.25 |
| [C++] Class (0) | 2024.12.25 |