09/02/11 00:01:08
質問です。
テンプレートクラスを継承しているクラスがあるとします。
継承先のクラスで継承元のメンバー関数の処理の動作を変えたい場合、
特殊化とオーバーライドの両方が使えそうな気がしています。
仮に両方が使用できる場合、メリットとデメリットはどのようなものがあるのでしょうか?
template <typename T> class BASE {
T t;
public:
virtual void func() {....}
};
---- オーバーライド -----
class A : public BASE<int> {
public:
virtual void func() {
func2();
BASE::func();
}
};
---- 特殊化 -----
template <>
class BASE <int> {
public:
void func() {
func2();
BASE::func();
}
};