클래스를 특수화한다는 방법이 좀 이상합니다.
글쓴이: dltkddyd / 작성시간: 금, 2013/11/29 - 3:41오후
포인터를 특수화하는 경우와 포인터가 아닌 타입을 특수화하는 경우 특수화의 방식이 다른가요?
아래 코드에서 포인터를 인수로 받는 클래스와 포인터가 아닌 인수를 받는 클래스의 특수화 방식이 좀 다르던데요.
#include <iostream> using namespace std; template<typename CARGT> class VoidTest { public: CARGT mem1; VoidTest() { cout<<"Not void"<<endl; } }; template<> class VoidTest<void> { public: VoidTest() { cout<<"Void"<<endl; } }; template<typename CARGT> class VoidTest<CARGT*> { public: VoidTest() { cout<<"Pointer."<<endl; } }; int main() { VoidTest<int> obj1; VoidTest<void> obj2; VoidTest<int*> obj3; VoidTest<void*> obj4; return 0; }
template<>
class VoidTest
template
class VoidTest
Forums:
다르기 때문에 특수화를 하는 겁니다.특수화는
다르기 때문에 특수화를 하는 겁니다.
특수화는 일반적인 템플릿으로 처리할 수 없거나,
좀더 최적화된 방법을 쓰기 위해 하는 거죠.
그리고 위의 예에서는 void와 pointer만 특수화가 되어 있습니다.
포인터 특수화는 좀 다르네요.
포인터가 아닌 타입의 특수화는 아래와 같은 식이라면
포인터 타입의 특수화는 아래와 같은 식이라고 외워야 겠네요.
<> 안에 타입을 넣지 않는 경우와 넣지 말아야 될 경우로요.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
전자는 특수화고 후자는 부분 특수화입니다. 포인터냐
전자는 특수화고 후자는 부분 특수화입니다. 포인터냐 아니냐의 차이가 아닙니다.
특수화와 부분특수화는 다른 것이죠..
...
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
댓글 달기