C++프로그래밍

2022. 6. 7. 17:45C++

함수

기본 인자 전달

 

일반화 프로그래밍


타입에 관계없이 알고리즘을 기술하는 프로그래밍 패러다임

void swap(int a,int b)

void swap(float a,float b)

void swap(char a,char b)

3개는 타입은 다르지만 기술하는것은 똑같다. 

 

템플릿 문법

클래스 템플릿함수 템플릿으로 구분된다

.

#include <iostream>

template <typename T1, typename T2>
void Print(const T1& a, const T2& b)
{
    std::cout << a << '\n';
    std::cout << b << '\n';
}

// 명시적 특수화
template <>
void Print(const int& a, const double& b)
{
    std::cout << "이것은 명시적으로 특수화 되었습니다.\n";
}

// 부분 특수화
template <typename T>
void Print(const T& a, const int& b)
{
    std::cout << "이것은 부분적으로 특수화 되었습니다.\n";
}

void main()
{
double d = 1.0;
Print(d, d); // Print<double, double>; 암시적 특수화 버전 호출

int i = 1;
Print(i, d); // Print<int, double>; 명시적 특수화 버전 호출

Print(d, i); // Print<double, int>; 부분 특수화 버전 호출

}

 

#C++ 프로그래밍

-템플릿 : 일반화 프로그래밍을 지원하는 기능.

-일반화 프로그래밍 : 타입에 관계없이 알고리즘을 기술하는 것

-템플릿 특수화는 컴파일 타임에 일어난다.

-템플릿은 헤더파일에 모든 내용을 적는다.

'C++' 카테고리의 다른 글

C++프로그래밍 (Template)  (0) 2022.06.07
C++ 객체지향  (0) 2022.06.02
C++ 객체지향 프로그래밍 상속쪽 오류  (0) 2022.05.31
객체지향 프로그래밍  (0) 2022.05.30
202204_15 c++ 구조체  (0) 2022.04.15