상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
갑상선증상 없애기 위해 피해야 할 음식은 무엇인가요?
갑상선증상과 관련하여 전문가의 도움이 필요한 경우가 있나요?
스테로이드의 금지 물질 목록은 어떻게 되나요?
스테로이드 사용 후 전문의 방문 시 챙겨야 할 질문은?
석류효능: 10가지로 체내 수분 유지에 효과적이다!
석류효능: 10가지로 활력 있는 라이프 스타일 만들기
핀테크와 소비자 행동의 변화는 어떤가요?
3만원대선물: 세련된 선택지를 위한 5가지 옵션!
3만원대선물: 기특한 친구를 위한 6가지 추천!
7가지 놀라운 다이어트간식, 언제 어디서나!
10가지 다이어트간식, 세상의 모든 간식 재발견!
폐에 좋은 허브는 무엇인가요?
Previous
Next
수정하기 - C++에서 템플릿의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++에서 템플릿은 코드의 재사용성을 높이고, 타입에 독립적인 프로그래밍을 가능하게 하는 강력한 기능입니다. 템플릿을 사용하면 동일한 코드 구조를 다양한 데이터 타입에 대해 적용할 수 있습니다. C++에서는 함수 템플릿과 클래스 템플릿 두 가지 주요 형태의 템플릿을 제공합니다. 1. 함수 템플릿 함수 템플릿은 다양한 데이터 타입에 대해 동일한 기능을 수행하는 함수를 정의할 수 있게 해줍니다. 함수 템플릿을 정의할 때는 `template` 키워드를 사용하고, 타입 매개변수를 지정합니다. 예제: 함수 템플릿 ```cpp include <iostream> using namespace std; // 함수 템플릿 정의 template <typename T> T add(T a, T b) { return a + b; } int main() { cout << "Int addition: " << add(3, 4) << endl; // int 타입 cout << "Double addition: " << add(3.5, 4.5) << endl; // double 타입 cout << "Float addition: " << add(3.5f, 4.5f) << endl; // float 타입 return 0; } ``` 위의 예제에서 `add` 함수는 `T`라는 타입 매개변수를 사용하여 다양한 타입의 인자를 받아들일 수 있습니다. `add` 함수는 호출될 때마다 인자의 타입에 맞춰 자동으로 인스턴스화됩니다. 2. 클래스 템플릿 클래스 템플릿은 다양한 데이터 타입에 대해 동일한 구조를 가진 클래스를 정의할 수 있게 해줍니다. 클래스 템플릿도 함수 템플릿과 유사하게 `template` 키워드를 사용하여 정의합니다. 예제: 클래스 템플릿 ```cpp include <iostream> using namespace std; // 클래스 템플릿 정의 template <typename T> class Box { private: T value; public: Box(T v) : value(v) {} T getValue() const { return value; } }; int main() { Box<int> intBox(123); Box<double> doubleBox(45<a href='https://sangseek.com/sangseeks/6.7/ko'>6.7</a>8); cout << "Int Box: " << intBox.getValue() << endl; // int 타입 cout << "Double Box: " << doubleBox.getValue() << endl; // double 타입 return 0; } ``` 위의 예제에서 `Box` 클래스는 타입 매개변수 `T`를 사용하여 다양한 타입의 값을 저장할 수 있는 클래스를 정의합니다. `Box<int>`와 `Box<double>`는 각각 `int`와 `double` 타입의 값을 저장하는 인스턴스입니다. 3. 템플릿 특수화 템플릿 특수화는 특정 타입에 대해 템플릿의 동작을 변경할 수 있는 방법입니다. 일반적으로 템플릿은 모든 타입에 대해 동일한 방식으로 작동하지만, 특정 타입에 대해 다른 구현을 제공하고 싶을 때 사용합니다. 예제: 템플릿 특수화 ```cpp include <iostream> using namespace std; // 기본 템플릿 template <typename T> class Printer { public: void print(T value) { cout << "Value: " << value << endl; } }; // 특수화: T가 char일 때 template <> class Printer<char> { public: void print(char value) { cout << "Character: " << value << endl; } }; int main() { Printer<int> intPrinter; intPrinter.print(42); // 일반 템플릿 사용 Printer<char> charPrinter; charPrinter.print('A'); // 특수화된 템플릿 사용 return 0; } ``` 위의 예제에서 `Printer` 클래스는 기본 템플릿과 `char` 타입에 대한 특수화를 가지고 있습니다. `char` 타입의 경우, 특수화된 `print` 메서드가 호출됩니다. 4. 템플릿 메<a href='https://sangseek.com/sangseeks/타프/ko'>타프</a>로그래밍 템플릿은 컴파일 타임에 계산을 수행할 수 있는 메타프로그래밍 기법으로도 사용됩니다. 이를 통해 복잡한 계산을 컴파일 타임에 수행하고, 실행 시간의 성능을 향상시킬 수 있습니다. 예제: 템플릿 메타프로그래밍 ```cpp include <iostream> using namespace std; // 팩토리얼 템플릿 메타프로그래밍 template <int N> struct Factorial { static const int value = N * Factorial<N - 1>::value; }; // 종료 조건 template <> struct Factorial<0> { static const int value = 1; }; int main() { cout << "Factorial of 5: " << Factorial<5>::value << endl; // 120 return 0; } ``` 위의 예제에서 `Factorial` 구조체는 템플릿 메타프로그래밍을 사용하여 팩토리얼을 계산합니다. `Factorial<5>::value`는 컴파일 타임에 120으로 계산됩니다. 결론 C++의 템플릿은 코드의 재사용성을 높이고, 타입에 독립적인 프로그래밍을 가능하게 하는 강력한 도구입니다. 함수 템플릿과 클래스 템플릿을 통해 다양한 데이터 타입에 대해 동일한 로직을 적용할 수 있으며, 템플릿 특수화와 메타프로그래밍을 통해 더욱 유연하고 강력한 코드를 작성할 수 있습니다. 이러한 기능들은 C++의 강력한 타입 시스템과 결합되어, 효율적이고 안전한 프로그래밍을 가능하게 합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기