将模板类作为基类的步骤

将模板类作为基类的步骤

学习C++模板---模板类作为基类
使用模板类作为基类使用。
// atl007.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <process.h>
#include <iostream>
 
//
//学习C++模板(7)。
//使用vc++ 2005编译运行, 操作系统XP.
//蔡军生2006/12/05
//
 
 
//
//模板类带简单参数,并使用缺省参数。
//蔡军生2006/12/05
//
template< typename T, int nMax = 5 >
class CTestVector
{
public:
CTestVector(void)
{
for (int i = 0; i < nMax; i++)
{
m_vec[i] = 0;
}
}
 
CTestVector(T vec)
{
for (int i = 0; i < nMax; i++)
{
m_vec[i] = vec;
}
}
 
void print(void)
{
for (int i = 0; i < nMax; i++)
{
std::cout<< m_vec[i] << std::endl;
}
}
protected:
private:
T m_vec[nMax];
};
 
//使用模板作为基类。
template< int nMax >
class CTestVectorInt : public CTestVector< int , nMax >
{
public:
CTestVectorInt(void)
{
std::cout<< "CTestVectorInt(void)" << std::endl;
}
 
CTestVectorInt(int vec)
:CTestVector< int , nMax >(vec)
{
std::cout<< "CTestVectorInt(int vec)" << std::endl;
}
 
protected:
private:
 
};
 
 
//
//程序入口点。
//
int _tmain(int argc, _TCHAR* argv[])
{
//使用继承模板。
CTestVectorInt< 2 > testVectorInt;
testVectorInt.print();
 
CTestVectorInt< 2 > testVectorIntVal(8);
testVectorIntVal.print();
 
//float实例。
CTestVector< float, 3 > testFloat( 3.14159f );
testFloat.print();
 
 
//double实例。
double dA = 1.55233f;
CTestVector< double, 6 > testDouble(dA);
testDouble.print();
 
//
//暂停.
//
system("pause");
 
return 0;
}