- //类模板中成员函数为模板函数的情况测试
- #include <iostream>
- using namespace std;
- template <typename T> //类模板定义
- class A{
- T data; //一个数据成员类型参数化为模板形参
- public:
- A(const T& t):data(t){}
- template<typename T2> //类的模板成员函数
- void f(T2 x) const ;
- //重载的输出运算符函数:也是一个模板函数(因它不是成员函数,故应声明为函数模板)
- template<typename T2>
- friend ostream& operator <<(ostream&os, const A<T2>& a) ;
- };
- //重载的输出运算符函数:也是一个模板函数
- template<typename T>
- ostream& operator <<(ostream&os, const A<T>& a)
- {
- os<<a.data;
- return os;
- }
- //重载的类模板的模板成员函数
- template<typename T> //第一层:类模板的类型模板化
- template<typename T2> //第二层:模板成员函数的模板化
- void A<T>::f(T2 x) const
- {
- cout<<"x=" <<x<<endl;
- cout<<"data="<<data<<endl;
- }
- int main(int argc, char const *argv[])
- {
- A<string> a("Hello");
- double x=0.19;
- a.f(x);//即 a.f<double>(x);
- cout<<a<<endl;
- return 0;
- }
类模板示例及类中成员函数的模板化
最新推荐文章于 2023-06-25 11:07:01 发布