C中的模板怎样使用? 最好给个例子~

作者&投稿:陟叶 (若有异议请与网页底部的电邮联系)
类模板的使用实际上是将类模板实例化成一个具体的___ A.类 B.对象 C.函数 D.模板类~

A..........

形象的:
类:人
对象:我,他,你
类是对象抽象即具体事物的抽象;
对象是类具体事物;

就算天下只剩下一只老虎;
那么老虎这个词也是类;
那剩下的一只老虎是一个对象

看看这个吧
http://www.njcc.edu.cn/njhysite/njhygao_js/xuebao/xuebao0402/zhjm.doc
其他的见

C语言中实现模板函数的方法

在C语言中实现模板函数的方法:

各种用C语言实现的模板可能在使用形式上有所不同。

现以一个求和函数Sum为例,用C++Template可写如下:

template<classT,classR> RSum(constT*array,intn)

{

Rsum=0;

for(inti=0;i<n;++i)

sum+=i;

returnsum;

}

如果不是内置类型,该模板隐式地需要有RR::operator+=(T)运算符可用。

1. 使用函数指针作为Functor替换者
TypedefstructtagAddClass

{

Void(*add)(char*r1,constchar*r2);

IntelemSize;

Char sum[MAX_ELEM_SIZE];

}AddClass;

voidSum(AddClass*self,constchar*array,intn)

{

for(inti=0;i<n;++i)

self->add(self->sum,array+i*self->elemSize);

}

使用时:

…..

VoidAddInt(char*r1,constchar*r2)

{

*(long*)r1+=*(int*)r2;

}

AddClassaddClass={AddInt,2,0};

Intarray[100];

Read(array);

Sum(&addClass,array,100);

…..

2. 用宏作为Functor的替换者
#define GenSumFun(SumFunName,Add,RetType,ElemType) \

RetTypeSumFunName(constElemType*array,intn) \

{ \

RetTypesum=0; \

for(inti=0;i<n;++i) \

Add(sum,i); \

returnsum; \

}

使用时:

#defineAddInt(x,y) ((x)+=(y))

GenSumFun(SumInt,AddInt,long,int)

…..

Intarray[100];

Read(array);

Longsum=SumInt(array,100);

…..

3. 所有可替换参数均为宏
至少需要一个额外的文件(实现文件)为impsum.c

/*impsum.c*/

RetTypeFunName(constElemType*array,intn)

{

RetTypesum=0;

for(inti=0;i<n;++i)

Add(sum,i);

returnsum;

}

使用时:

#undef RetType

#undef FunName

#undef ElemType

#undef Add

#defineAddInt(x,y) ((x)+=(y))

#defineRetTypelong

#defineFunNameSumInt

#defineElemTypeint

#defineAdd AddInt

#includeimpsum.c

…..

Intarray[100];

Read(array);

Longsum=SumInt(array,100);

…..

4. 总结:
第一种方法,易于跟踪调试,但是效率低下,适用于对可变函数(函数指针)的效率要求不高,但程序出错的可能性较大(复杂),模板函数(Sum)本身很复杂,模板参数也比较复杂(add)的场合。

第二种方法,效率高,但很难跟踪调试,在模板函数和模板参数本身都很复杂的时候更是如此。

第三种方法,是我最近几天才想出的,我认为是最好的,在模板参数(Add)比较复杂时可以用函数(第二种也可以如此),简单时可以用宏,并且,易于调试。在模板函数本身很复杂,而模板参数比较简单时更为优越。但是,可能有点繁琐。

一般情况下,没有必要做如此劳心的工作,一切交给编译器去做就行了。但是本人在开发一个文件系统时,由于是基于一种少见的平台,没有可用的C++编译器,有几个函数,除了其中的类型不同(uint16和uint32),和几个可参数化的宏不同,其它地方完全相同,而函数本身很复杂(两百多行代码)。Copy出几个完全类似的函数副本,维护起来特别烦人。非常需要如此的编程模式,故此,分享出来,大家共同探讨。


ppt如何使用模板
新建一个PPT文档,或者打开已有的文档——菜单栏——设计——你就会看到已经安装了的所有的模板,然后,点一下右边的下拉箭头,会看到更多,喜欢哪个,就用力哪个吧!二,灵活应用多个幻灯片模板:用第一种方法幻灯片只能应用同一种模板,有时候会让整个幻灯片感觉单调死板。我们可以给演示文稿中的幻灯片...

word格式模板创建及使用的主要步骤有哪些?
如果你经常编辑的Word文档具有相似的格式或版面,那么使用模板会简化许多操作,省去一些重复的步骤,大大提高工作效率。如果你经常编辑的Word文档具有相似的格式或版面,那么使用模板会简化许多操作,省去一些重复的步骤,大大提高工作效率。什么是模板模板是一个用来创建文档的大概模型,一个模板一般包含的信息...

YY语音中的教育模板如何使用?YY教育模板使用方法介绍
教育直播也是YY语音的一大特色功能,我们可以再教育频道收看到各种教程的视频或语音直播,非常方便。但对于想做教育直播的朋友来说,在教育模板的使用上可能还有疑问,下面小编就告诉大家怎么用YY教育模板。软件名称:YY语音V6.8.0.1 官方正式版    软件大小: 16.4M   ...

怎样利用模板制作ppt?电脑上做ppt怎么用模板
电脑上做ppt怎么用模板您好,方法 打开PPT(PowerPoint),新建一个空白的PPT。然后点击【视图】菜单,点击“母版视图”栏的“幻灯片母版”。选择第一张PPT,点击【插入】菜单,点击“图像”栏中“图片”,找一张自己想做每张PPT都有的图片,点击插入。插入进来可以对图片大小进行修改,位置调整。点击【...

Word格式模板创建及使用的主要步骤有哪些?
如果你经常编辑的Word文档具有相似的格式或版面,那么使用模板会简化许多操作,省去一些重复的步骤,大大提高工作效率。如果你经常编辑的Word文档具有相似的格式或版面,那么使用模板会简化许多操作,省去一些重复的步骤,大大提高工作效率。什么是模板 模板是一个用来创建文档的大概模型,一个模板一般包含的信息...

模板怎么编辑?如何使用Word模板
4.如何修改ppt模板中的文字和图片 5.如何更换ppt模板如何使用Word模板?1.创建模板 Word2003为用户提供了许多预先设计的模板,用户还可以根据需要自行创建新模板。下面将讲解利用文档创建模板的方法。利用文档创建模板是指打开一个已有的Word文档,在对其进行编辑修改后,将其另存为一个模板文件,具体操作...

word如何保存模板?如何使用Word模板
5.word2013如何使用模板创建文档如何使用Word模板?1.创建模板 Word2003为用户提供了许多预先设计的模板,用户还可以根据需要自行创建新模板。下面将讲解利用文档创建模板的方法。利用文档创建模板是指打开一个已有的Word文档,在对其进行编辑修改后,将其另存为一个模板文件,具体操作如下:1)打开需要的文档...

word模板怎么设置, word模板怎么设置?
进入C盘,搜索一下Normal.dot。2、在搜索结果中找到文件Normal.dotm,然后右击在弹出的菜单中选中打开文件位置选项,进入该文件所在的目录,这个Normal.dotm就是word的默认模板。3、双击文件Normal.dotm打开这个模板文件,然后编辑文件格式。这个文件是不能直接保存的,需要使用另存为,保存一个新的模板文件到...

怎样在word中建立模板?
步骤四:在新建的模板中进行编辑,如下图,将页面改为横页。步骤五:保存后,我们打开word,新建一个新的word文档,如下图,点击“本机上的模板”。word文档中怎么制作模板模板是指带有一定格式的文件,如果经常要用到一些特定格式的人创建一个自己的模板可以省去不少设置WPS的时间,那么下面就由我给...

ppt模板使用教程-下好的PPT模板怎么用?
2、或者将下载的PPT模板文件复制到C:\\ProgramFiles\\MicrosoftOffice\\Templates\\2052目录下(如果你的PPT软件不是安装在C盘那要找到安装盘进行一样的操作),然后使用“文件”-“新建”-在右边的导航窗口中选“本机上的模板”-“演示文稿”找到你下载的模板就可以了。

翠峦区13388566109: c++中函数模板的用法. -
聊肩益脑: 在使用函数是必须要有#include...〈stdio.h〉#include〈math.h〉 { 然后是函数名();} 这是手机大的可能格式有点问题,不过就是这种形式.

翠峦区13388566109: 怎么用c++中的模板实现 某一变量不同类型值的输入 及变量a可以输入 字符 或者 整型数 -
聊肩益脑: // 定义一个模板类里面的class T就代表模板,T可以是任何类型 templateclass A { T m_t; public: A(T t): m_t(t) {}void func(T t); }; int main() { // 注意,我在里填了int,那就相当于class A里面的变量T m_t是int m_t了 // 构造函数相当于A(int t): m_t(10) {}了 A a(10); // 字符串同理 char* str = “你好!”; A a(str); } 详细了解,可以看一下List的实现,希望能帮上你!

翠峦区13388566109: c++中如何使用类模板
聊肩益脑: 是添加类的,类模版是模版中的内容,定义一个类,然后定义用模版书写这个类,一般很好实现的.

翠峦区13388566109: C++模板的使用,急!!! -
聊肩益脑: lz需要的是:模板的模板参数,就是模板参数本身含是一个模板.比如:template template class Type,class Allocator=allocator>class TContainer, class TElem> class MyContainer : public TContainer { }; 实例化时就可以:MyContainer myContainer; myContainer.push_back( 1 ); 也可以用list,只要传入的容器模板定义和TContainer一致就可以编译通过.所以,map就不行了.

翠峦区13388566109: c++中函数模板怎么用的? -
聊肩益脑: Template //或者 Template T print(T a) { T b=a; cout<}

翠峦区13388566109: C++的函数模板是怎么使用的,好像是比函数重载好一些? -
聊肩益脑: 应该没有实质性的区别吧,底层的实现原理应该是一致的,不过类重载之后类中的成员函数和数据成员都可以用类中的模版了!类重载:templet(此处可以有多个类型包括类类型,templet(class T,Link H)) class Array{ private:enum size{size=100...

翠峦区13388566109: C++模板类的使用 -
聊肩益脑: SeqQueue<BTNode<T> > 后面那两个">>"中间有个空格.例如#include <vector> template <typename T> class A { public:protected:private: T m_t; }; template <typename T> class B { public:protected:private: std::vector<A<T> > m_a; };

翠峦区13388566109: C++中函数模板怎么用
聊肩益脑: template<typename T>后面不能有;

翠峦区13388566109: 类模板的类模板的使用 -
聊肩益脑: 类模板的使用实际上是将类模板实例化成一个具体的类,它的格式为:类名<实际的类型>.模板类是类模板实例化后的一个产物.说个形象点的例子吧.我把类模板比作一个做饼干同的模子,而模板类就是用这个模子做出来的饼干,至于这个饼干是什么味道的就要看你自己在实例化时用的是什么材料了,你可以做巧克力饼干,也可以做豆沙饼干,这些饼干的除了材料不一样外,其他的东西都是一样的了.

翠峦区13388566109: C++中有关类模板的例子,最好有两个类,主要是关于list容器的用法,请举例说明,谢谢! -
聊肩益脑: 要想把对象放入list容器,该对象至少要满足2个条件: 1 可以复制 2 有默认构造函数 任何非对象类型都可以直接放入容器

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网