当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<b>简单模板概念</b>[VC/C++编程]

赞助商链接



  本文“<b>简单模板概念</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

我从前关于模板的理解都是断断续续的,于是预备系统的专研一遍,认为得花去一两天的时间,没想到,不到一个上午,就完成了筹划,回头一看,模板也无非就如此罢了吗!于是,这篇的标题就叫“简单模板概念”.

抛去其他有关书和资料的讲法,我将按照我自己的理解以简单的语言描写模板.

(当然,实际上模板有它自己复杂的一面,呵呵,俺不谈论这个)

1.模板的作用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

哼!为什么一个类一个函数就只能用固定的数据范例呢?我只是范例不一样,但是处理上是完好相同的啊,这样代码反复率大大的增添了啊!有没有搞————错!

这是我从前忿忿不平的事情,直到我发现了模板,呵呵,那但是个好东西.它可以增添代码重用率.它利用非特定范例定义类或函数,到利用的时刻再用特定的范例替换它们.

N,为了削减代码冗余和文字重用率,这里就不举例子了,在以下两节中举例.

2.类模板

在类的定义中利用模板是我们最——常见的了,你看看,有ATL,有STL,呵呵,好多.

关——键字(周星驰语气):template

关键标记:<>

说关键的就是关键,上面的两个少了可不行,怎么用呢?看完下面这个简单的例子,你即刻就会了:

#include <iostream.h>
template <class T>
class myclass{
T temp;
public:
myclass(T name){
temp=name;
}
  T vomit(){
return temp;
}
};
  void main()
{
myclass<int> t1(2);
cout<<t1.vomit()<<endl;
myclass<char*> t2("醉拳");
cout<<t2.vomit()<<endl;
myclass<float> t3(3.14159);
cout<<t3.vomit()<<endl;
}

千万别奉告我你没看懂得,要不然,考下来履行一遍,别奉告我你不会怎么履行啊!倒~~~看到没有,在普通的类的定义前面加上template<class T>,这样T就是这个类中可以利用的范例了.在利用的时刻类名和T要一同用才能精确表示这个类,并且用肯定的范例替换这个T,就象上面写的myclass<int>,myclass<char*>之类的.OK,就这么简单.

注意函数vomit(谁能说出它的英文意思?呵呵),在这里是用内联函数实现的,那把他放到类的表面去呢?该怎么定义?呵呵,就象下面这模样啊:

template <class T>
T myclass<T>::vomit(){
return temp;
}

首先,前面加上和类定义一样的template <class T>,类名一定要注意,是myclass<T>而不是myclass.

OK,类模板知道这些便可以啦.

3.函数模板

和类模板一样,函数也可以用好多范例来实现代码重用,举个例子得了,别不多说,自己看,大概运行一下,我都举的是很简单的例子,旨在揭露原理:

#include <iostream.h>
template <class T>
void f(T qie)
{
cout<<qie<<endl;
}
  #define X f<char*>
  void main()
{
f<int>(3);
f<char>('r');
X("aadf");
}

运行一下看看?


  以上是“<b>简单模板概念</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .