본문 바로가기

전체 글

(71)
[C++] 5-5 템플릿 클래스(Template class) 템플릿 클래스 템플릿 클래스는 템플릿 함수보다 더 강력한 기능을 제공한다. 템플릿 함수와 마찬가지로 템플릿 클래스의 사용법도 간단하다. 자세한 내용은 아래 예제에서 참고할 수 있다. 예제 #include using namespace std; template class test { private: T1 x; T2 y; public: test(T1 a, T2 b); void output(); }; template test ::test(T1 a, T2 b) { x = a; y = b; } template void test ::output() { cout
[C++] 5-4 템플릿 함수 (Template function) 템플릿 프로그래밍을 하다 보면 매개변수와 return값의 데이터형이 다를 뿐, 함수의 내부 구조가 동일한 함수들을 사용해야 되는 경우가 발생한다. 이때에는 데이터형 별로 여러 개의 함수를 작성해야 하는 번거로움이 발생한다. C++에서 제공하는 오버로드 기능을 이용하면 서로 다른 유형의 데이터를 사용해서 비슷한 작업을 수행하는 함수들을 동일한 이름으로 정의할 수 있지만, 서로 다른 return값을 돌려주는 경우에는 함수 명을 별개의 이름으로 작성해야 한다. C++에서 이러한 문제를 해결하기 위해서 템플릿(template)기능을 제공한다. 템플릿 기능으로 return 값의 다양한 데이터형을 설정할 수 있으므로 편리하게 함수를 작성하고 관리할 수 있다. 템플릿은 함수와 클래스에 적용할 수 있다. 각각 템플릿 ..
[C++] 5-3 순수 가상 함수 (Pure virtual function) 순수 가상 함수 순수 가상 함수(pure virtual function)는 부모 클래스 내부에 본체에 정의하지 않는 가상 함수이다. 자식 클래스에서 오버라이드될 것이 확실한 멤버 함수들은 부모 클래스 내부의 순수가상함수를 이용한다. 순수가상함수의 선언 방법은 아래 예제에서 참고할 수 있다. 순수 가상 함수에 0 값을 설정한 것은 컴파일러에게 부모 클래스에 순수 가상 함수가 있다는 것을 알려주기 위한 것이다. 부모 클래스에서 가상 함수가 순수 가상 함수로 선언되면, 반드시 각 자식 클래스에서는 가상 함수가 오버라이드 되어야 한다. 만일 오버라이드 도지 않으면 오류가 발생한다. 적어도 하나의 순수 가상 함수를 포함하고 있는 클래스를 추상 클래스(abstract class)라 한다. 추상 클래스를 사용해서는 ..