学习C++模板---模板类带简单参数,并且添加缺省参数,特例模板

C++模板详解
本文介绍了C++中的模板类定义及使用方法,包括如何定义带有默认参数的模板类和特例模板。通过具体示例展示了不同数据类型实例化的应用。
模板类不但可以定义类型,还可以定义普通参数类型。在定义类型时,还可以使用缺省参数。
虽然模板可以通用,但有时需要进行特别类型的特别对待,这样就需要使用特例模板。下面的模板template< >
class CTestVector< short, 2 >
,就是特例模板。
 
 
// atl005.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <process.h>
#include <iostream>
 
//
//学习C++模板(5)。
//蔡军生 2006/12/05
//
 
 
//
//模板类带简单参数,并使用缺省参数。
//蔡军生2006/12/05
//
template< typename T, int nMax = 5 >
class CTestVector
{
public:
     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< >
class CTestVector< short, 2 >
{
public:
     CTestVector(short vec)
     {
         for (int i = 0; i < 2; i++)
         {
              m_vec[i] = vec;
         }
     }
 
     void print(void)
     {
         std::cout<< "CTestVector< short, 2 >" << std::endl;
 
         for (int i = 0; i < 2; i++)
         {
              std::cout<< m_vec[i] << std::endl;
         }
     }
protected:
private:
     short m_vec[2];
};
 
//
//程序入口点。
//
int _tmain(int argc, _TCHAR* argv[])
{
     //使用特例模板。
     CTestVector< short,2 > testShortA(2);
     testShortA.print();
 
     //不使用特例模板。
     CTestVector< short,1 > testShortB(1);
     testShortB.print();
 
     //int实例,使用缺省参数。
     CTestVector< int > testInt(10);
     testInt.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;
}
 
输出结果:
CTestVector< short, 2 >
2
2
1
10
10
10
10
10
3.14159
3.14159
3.14159
1.55233
1.55233
1.55233
1.55233
1.55233
1.55233
请按任意键继续. . .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值