类的成员模板的类内和类外定义方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HQ354974212/article/details/70599635

#include "stdafx.h" 
#include<iostream >  


using namespace std;


//---------------------------------情况1: 类模板中成员模板的类体内定义方法:--------------------------------------------
template<typename T>//类模板
class A
{
public:
template<typename T1>//成员模板函数定义
        T1 f()
{
T1 t = T1();
return t;

}


A()//构造函数

{}


template<typename T2>//成员模板类定义
class AA
{
};


};


//---------------------------------情况2: 类模板中成员模板的类体外定义方法:--------------------------------------------

template<typename T>
class B
{
public:
template<typename T1>//成员模板函数声明
T1 f();
 

B(); 


template<typename T2>//成员模板类声明
class BB;
};
//成员模板函数的类外定义。
template<typename T>
template<typename T1>
T1   B<T>::f()
{
T1  t = T1();
return t;
}


template<typename T> 
B<T>::B()



}


//成员模板类的类外定义。
template<typename T>
template<typename T2>
class B<T>::BB
{
};




//---------------------------------情况3:  非类模板中成员模板类内定义-------------------------------------------- 
class C
{
public:
template<typename T1>//成员模板函数定义
   T1 f()
{
T1 t = T1();
return t;
}
  
      C()   {}
 
template<typename T2>//成员模板类定义
class CC
{
};
};


//---------------------------------情况4:  非类模板中成员模板的类外定义方法-------------------------------------------- 

class D
{
public:
template<typename T1>//成员模板函数声明
T1 f();


D();


template<typename T2>//成员模板类声明
class DD;
};
//成员模板函数类外定义
template<typename T1>
T1   D::f()
{
T1  t = T1();
return t;
}


D::D()
{}


//成员模板类的类外定义
template<typename T2>
class D::DD
{
};


int main()
{
//-------------------1情况-------------------------
A<float> a;
   cout<<a.f<int>()<<endl;
A<int>::AA<float >  aa;


//-------------------2情况-------------------------
B<float>  b;
cout << b.f<int>() << endl;
B<int>::BB<float >  bb;


//-------------------3情况-------------------------
C c;
cout << c.f<int>() << endl;   //非类模板的成员模板函数使用方法
C::CC<int>  cc;     //非类模板的成员模板类使用方法


   //-------------------4情况-------------------------
D d;
cout << d.f<int>() << endl;    //非类模板的成员模板函数使用方法
D::DD<int>  dd;     //非类模板的成员模板类使用方法


return 0;
}
展开阅读全文

没有更多推荐了,返回首页