-
-
using namespace std;
-
-
template< typename T>
-
class A
-
{
-
public:
-
A(T a)
-
{
-
this->a = a;
-
}
-
void printA()
-
{
-
cout<< "a:"<<a<< endl;
-
}
-
protected:
-
private:
-
T a;
-
};
-
//模板派生是需要具体化模板类 c++编译器需要知道 父类的数据类型具体是什么样的(派生类首先调用父类的构造函数)
-
//=====》要知道父类所占内存大小是多少,只有数据类型固定下来,才知道如何分配内存
-
class B: public A< int>
-
{
-
public:
-
B():A( 1)
-
{
-
this->a = 10;
-
}
-
void printA()
-
{
-
cout<< "a:"<<a<< endl;
-
}
-
protected:
-
private:
-
int a;
-
};
-
//类模板派生类模板
-
template< typename T>
-
class B2: public A <T>
-
{
-
public:
-
B2(T c, T d):A <T> (c)
-
{
-
this->c = c;
-
this->d = d;
-
-
}
-
void printC()
-
{
-
cout<< "c:"<<c<< endl;
-
}
-
protected:
-
private:
-
T c;
-
T d;
-
};
-
-
//类模板做函数参数
-
-
void UseA(A<float> &a)
-
{
-
a.printA();
-
}
-
-
int main()
-
{
-
-
B2< int> b( 1, 2);
-
b.printC();
-
-
system( "pause");
-
return 0;
-
}