学习C++模板---模板类作为基类,使用参数类
2006-12-07 11:07
267 查看
学习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;
}
在模板里还可以使用参数类来实现多态。
// 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;
}
相关文章推荐
- 学习C++模板---模板类作为基类
- 学习C++模板---模板类带简单参数,并且添加缺省参数
- 学习C++模板---模板类带简单参数,并且添加缺省参数,特例模板
- 在模板类中使用字符串作为无类型模板参数
- 在模板类中使用字符串作为无类型模板参数
- 学习C++模板---模板类带简单参数
- WebService学习之如何使用实体对象作为参数
- 如何将一个模板类A作为模板类B的模板参数
- 一步步学习Reporting Services(二) 在报表中使用简单的参数作为查询条件
- 细雨学习笔记:Jmeter上一个请求的结果作为下一个请求的参数--使用正则提取器
- 一步步学习Reporting Services(二) 在报表中使用简单的参数作为查询条件
- Kotlin语言学习之将函数作为参数传递,使用双冒号::引用其他方法
- Java学习笔记43. 使用对象作为方法的参数
- SpringMVC学习(五)之使用Servlet原生API作为参数
- springmvc学习笔记(8)——使用Servlet原生API作为参数
- 网络流模板(作为今后学习参考使用)
- SpringMVC学习(四)之使用POJO作为参数
- 如何将一个模板类A作为模板类B的模板参数
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
- 学习SpringMVC(四)之使用pojo作为参数