为什么在类模板外定义成员函数时需要在函数名前添加<参数列表>

C++语言 码拜 10年前 (2015-05-11) 1700次浏览 0个评论

在类模板外部定义成员函数的方法为:

template<模板形参列表> 
返回类型 类名<模板形参名>::函数名(参数列表)
{
    函数体;
}

为什么在类模板外定义成员函数时需要在函数名前添加<参数列表>

请教为什么这里面类成员函数out前要加<type>?template<class type>不已经指明了类型了吗?

不然编译不过啊,,,,,,
引用 1 楼 guicaisa 的回复:

不然编译不过啊,,,,,,

额,看到了编译不过,不过我想知道那个参数列表的作用是什么

因为会生成多个这个函数
void Graphics<char>::out () ;和
void Graphics<int>::out () ;不是同名函数
看到楼上的解释,我自己也重新学习了一遍。
引用 3 楼 ID870177103 的回复:

因为会生成多个这个函数
void Graphics<char>::out () ;和
void Graphics<int>::out () ;不是同名函数

非常感谢,可是还没看明白,也没想通,我再多看看,谢谢你

35分
准确说也不是这样,会编译成这样
void out (Graphics<char> *) ;
void out (Graphics<int> *) ;
算是重载
但其实重载也是不同名函数
5分
因为标准就是这么规定的。
标准本来也可以用其它规定。
所以,没有为什么,别在规定上浪费生命。
引用 7 楼 taodm 的回复:

因为标准就是这么规定的。
标准本来也可以用其它规定。
所以,没有为什么,别在规定上浪费生命。

好吧,谢谢啦

引用 6 楼 ID870177103 的回复:

准确说也不是这样,会编译成这样
void out (Graphics<char> *) ;
void out (Graphics<int> *) ;
算是重载
但其实重载也是不同名函数

再次向你表示感谢啦。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么在类模板外定义成员函数时需要在函数名前添加<参数列表>
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!