标签:stream soft 实例化 类型 const std pen 函数定义 必须
有函数模板的,一定是类模板。
通过给函数模板传值就可以确定类型,为什么还要通过类确定呢。然后就试了试:
#include<iostream> using std::cout; using std::endl; template<typename T> class lei { int a; void output(const T &b); }; template<typename T> void lei::output(const T &b) { cout << b << endl; } int main() { lei A; A.output(1.2); return 0; }
上面代码想把含有函数模板的类定义成普通类,通过传值(1.2)确定类型,但是函数定义的第一行会报错。
下面是对的:
#include<iostream> using std::cout; using std::endl; template<typename T> class lei { public: int a; void output(const T &b); }; template<typename T> void lei<T>::output(const T &b) { cout << b << endl; } int main() { lei<int> A; A.output(1.2); return 0; }
先实例化类模板,lei<int>A;执行后类中的T被int代替,因为成员函数的形参是int,所以函数实参必须是int。
标签:stream soft 实例化 类型 const std pen 函数定义 必须
原文地址:http://www.cnblogs.com/mu-ye/p/7622806.html