[C++] 함수 오버로딩과 템플릿

2024. 12. 26. 22:33·C++/Basic

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
'C++/Basic' 카테고리의 다른 글
  • [C++] 스마트 포인터
  • [C++] 객체지향 프로그래밍
  • [C++] Class
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Algorithm
    본캠프
    디자인패턴
    unrealengine
    레벨디자인
    gas
    Design Pattern
    하드 레퍼런싱
    tsoftobjectptr
    KPT회고
    퀘스트
    actor
    Animation
    basic
    게임동기화
    내일배움캠프
    디자인 패턴
    알고리즘
    Implement
    사전캠프
    unreal
    GameplayEffect
    component
    c++
    AI
    액터
    DesignPattern
    소프트 레퍼런신
    Til
    assetmanager
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[C++] 함수 오버로딩과 템플릿
상단으로

티스토리툴바