学习C++模板---模板类作为基类,使用参数类

学习 C++模板---模板类作为基类,使用参数类
在模板里还可以使用参数类来实现多态。
// atl009.cpp : Defines the entry point for the console application.
//
//
//
#include "stdafx.h"
#include <process.h>
#include <iostream>
// 学习C++模板(9)。
// 使用vc++ 2005编译运行, 操作系统XP.
// 蔡军生2006/12/06
//
// 调试使用的参数类。
class CTestDebug
{
public :
static void Print(void)
{
//
std::cout<< "CTestDebug, Debug!" << std::endl;
}
};
// 发行使用的参数类。
class CTestRelease
{
public :
static void Print(void)
{
//
std::cout<< "CTestRelease, Release!" << std::endl;
}
};
//
// 模板类带简单参数,并使用缺省参数,
// 多态实现,使用结构实现多态。
// 蔡军生2006/12/06
//
template < typename T, int nMax = 5 ,typename TestDebug = CTestDebug >
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)
{
// 这里使用多态。
TestDebug::Print();
for (int i = 0; i < nMax; i++)
{
std::cout<< m_vec[i] << std::endl;
}
}
protected :
private :
T m_vec[nMax];
};
//
// 程序入口点。
//
int _tmain(int argc, _TCHAR* argv[])
{
//float 实例。
CTestVector< float, 3 > testFloat( 3.14159f );
testFloat.print();
//double 实例,使用发行版的输出。
double dA = 1.55233f;
CTestVector< double, 6, CTestRelease > testDouble(dA);
testDouble.print();
//
// 暂停.
//
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值