클래스를 특수화한다는 방법이 좀 이상합니다.
글쓴이: 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만 특수화가 되어 있습니다.
포인터 특수화는 좀 다르네요.
포인터가 아닌 타입의 특수화는 아래와 같은 식이라면
포인터 타입의 특수화는 아래와 같은 식이라고 외워야 겠네요.
<> 안에 타입을 넣지 않는 경우와 넣지 말아야 될 경우로요.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
전자는 특수화고 후자는 부분 특수화입니다. 포인터냐
전자는 특수화고 후자는 부분 특수화입니다. 포인터냐 아니냐의 차이가 아닙니다.
특수화와 부분특수화는 다른 것이죠..
...
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
댓글 달기