C++模板的定制三:部分定制C++类

原创 2001年10月27日 19:06:00

C++模板的定制三:部分定制C++类<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

       类模板的多参语法如下:

       template <typename T, typename P,……>

       class classname

{

       ……

};

T可以是任何类型,上一节我们介绍了定制类模板,本节说一下类模板的部分定制,意思就是说只定制模板参数的一部分,从而得到我们想要的目的,本节直接来描述其语法,我想信大家都不愿意我在这罗嗦,都想直接了解其语法。下面我们就看一个类模板部分定制的例子。

SpecTemplate类的原型如下:

template <typename T,typename P>

class SpecTemplate

{

public:

       SpecTemplate(T t,P p):_valt(t),_valp(p){}

       ~SpecTemplate(){}

       T typeT(){return _valt;}

       void typeT(T& t){ _valt = t;}

       void display(){cout<<_valt<<endl;}

       ……

 

private:

       T _valt;

       P _valp;

};

假设我们想定制SpecTemplate类的模板参数P,当Pstring类型时,我们希望其相应的SpecTemplate类和通用的SpecTemplate类具备不同的功能。这时需部分定制SpecTemplate类,部分定制示例如下:

template <typename T>

class SpecTemplate<T,int>

{

public:

       SpecTemplate(T t,int p):_valt(t),_valp(p){}

       ~SpecTemplate(){}

       T typeT(){return _valt;}

       void typeT(T& t){ _valt = t;}

       void display(){cout<<_valp<<endl;}

       ……

 

private:

       T _valt;

       int _valp;

};

这样就完成了类模板的部分定制,从而实现你特殊的要求。这里只是举例,请大家千万别说这样有不没有意义什么的。我只希望大家能明白其用法即可。

:现在的VC6.0尚不支持这种写法,但这是C++标准写法,如果要试请用BCGCC编译器。

文章写的仓促,有错别字或错误请大家多批评指出。谢谢大家的捧场,在下感激不尽,欢迎和大家交流 (-----袁凯-----)

C++模板的定制一:定制函数模板

前言       C++模板是C++的扩展,模板为C++注入了新的活力。C++模板分为函数模板和类模板。C++模板对于大多数C++程序员并不陌生。C++模板有一定的定制特性。C++模板的定制一:定制函...
  • winmain
  • winmain
  • 2001年10月27日 10:35
  • 744

C++ - 类模板的 部分定制(partial specializations) 和 定制成员(specialization members)

类模板的 部分定制(partial specializations) 和 定制成员(specialization members) 本文地址: http://blog.csdn.net/carol...
  • u012515223
  • u012515223
  • 2013年12月11日 10:00
  • 2252

python学习(7)定制类的特殊方法

形如__xxx__的函数是类的特殊方法。 常需要修改的特殊方法有下面这些:
  • qq_18738333
  • qq_18738333
  • 2016年03月03日 23:54
  • 716

C++链表模板类

思想和上篇文章差不多,只是换了层包装。 直接上代码: // linklist.h #include #include using namespace std; template stru...
  • zyq522376829
  • zyq522376829
  • 2015年07月11日 23:03
  • 1412

C++模板类的使用和继承

定义一个类模板,注意两点: 1,类的定义前面使用关键词:template 2,函数的实现部分,在每个函数名的上一行也要加关键词template , 并且在函数名后面添加,例如 template...
  • taigw
  • taigw
  • 2014年01月14日 10:59
  • 2808

【C++】类模板(template)作用对比举例

一、类模板 类模板是后期C++加入的一种可以大大提高编程效率的方法 关键字template 用法 template class T {      //.... }   二、举个栗子 我们要写一个比较...
  • qq_31828515
  • qq_31828515
  • 2016年07月07日 15:44
  • 2205

c++通用模板类(template class)定义实现详细介绍

有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int { public : Compare(int a,int b) { x=a; y=...
  • u013443618
  • u013443618
  • 2015年11月20日 11:11
  • 5661

C++类模板中的模板函数

在C++中类模板中可以嵌套函数模板,但是在使用时候有些注意事项如下: 一、如果类模板中参数为template,在函数模板中,函数的不同模板名字是可以重载的,如template void assign...
  • u010585135
  • u010585135
  • 2015年01月24日 10:05
  • 1189

Python学习笔记——定制类

个人理解,如有错误请指正!共同学习,一起进步学到定制类时,看到一段代码class Chain(object): def __init__(self,path=""): self...
  • ChenTianSaber
  • ChenTianSaber
  • 2016年08月16日 17:25
  • 475

定制自己的Log日志工具—轻松控制log打印

在写项目时为了方便调试,往往会在代码的很多地方都打印大量的日志。最近项目基本完成了,这时却有一个非常让人头疼的问题,就是之前用于调试的那些日志在项目上线之后仍旧会照常打印,这样不仅会降低程序的运行效率...
  • guolipeng_network
  • guolipeng_network
  • 2017年06月12日 15:30
  • 158
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++模板的定制三:部分定制C++类
举报原因:
原因补充:

(最多只允许输入30个字)