关于类重载的问题.

来源:百度知道 编辑:UC知道 时间:2024/05/26 11:39:24
都知道类重载要声明,
例如template <class numtype>
如果在一个类中定义了一个void 的函数,
而当在这个类的函数都在这个类入面定义的时候,那么void 的可以不用理会.
如果成员函数是在类外定义的话,如果那个返回类型是void的函数还要不要声明template <class numtype>呢?
感谢ggdmdf 的热心回答,
可是我还是不太明白你最后说那句,
因为类模版这些就是方便我们的程序可以简单点,
所以是到一个类可以多个用.
你那里有三个show函数,应该是只要第一个就可以了吧.因为第二,第三个里面的功能也可以在第一个里面实现.
请问是不是这样呢?
还有,在第一个show那里定义这样对吗?
void a<T>::show(T val){
//...
}

需要.

template < typename T >
class A{
//...
};

此时,A<T>才是一个具体的类名,A只是一个模板.

但是,可以为外部函数指定特定类型的实现:
template < typeanme T >
void A::show(T val) {
// ...
}
// 为int实现特定的show函数
void A<int>::show(int val) {
// ...
}
// 为double实现特定的show函数
void A<double>::show(double val) {
// ...
}

如果你觉得其它类型不需要调用(或不允许)调用show,可以不实现模板性质的show(第一个模板函数),而只实现指定类型的show(第二,三特定函数).