更多课程 选择中心

C/C++培训
达内IT学院

400-111-8989

函数模板与类模板教程

  • 发布:C++培训
  • 来源:51ct0博客
  • 时间:2020-05-18 16:33

模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模板可以分为两类,一个是函数模板,另外一个是类模板。

1、函数模板的写法:

函数模板的一般形式如下:

Template <class 或者也可以用typename T>

返回类型 函数名(形参表)

{// 函数定义体 }

说明: template 是一个声明模板的关键字,表示声明一个模板关键字class 不能省略,如果类型形参多于一个 ,每个形参前都要加class < 类型 形参表> 可以包含基本数据类型可以包含类类型.

注意:每个模板函数前面都要加上“Template <class 或者也可以用typename T> ”这一行。

//在template语句与函数模板语句之间不允许有别的语句;

请看以下程序:

//mian.cpp

#include <iostream>

// 声明一个函数模版, 用来比较输入的两个相同数据类型的参数的大小,class 也可以被typename 代替,

//T 可以被任何字母或者数字代替。

template <class T>

T max(T &x,T &y)//主要必须是参数引用,不能是 T min(T x,T y)

{

if (a>b)

{

return a;

}

return b;

}

void main( )

{

int i1 = 3,i2=5;

char c1='a',c2='b';

double d1=0.35,d2 = 0.2;

cout<<"for int最大的为:"<<max(i1,i2)<<endl;

cout<<"for char最大的为:"<<max(c1,c2)<<endl;

cout<<"for double最大的为:"<<max(d1,d2)<<endl;

}

2.、类模板的写法:

定义一个类模板:

Template < class 或者也可以用typename T >

class 类名{

};

说明:其中,template 是声明各模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个。 每个前面要有classtypename,用逗号隔开

注意:每个模板类数前面都要加上“Template <class 或者也可以用typename T> “这一行。

例如:定义一个类模板:

// template.h

#paragm once

template <typename T1,typename T2>

class myClass{

private :

T1 I;

T2 J;

public :

myClass(T1 a, T2 b);//若成员函数中使用了模板,则此函数需要在类体外定义!!!

void show();

};

//构造函数

template <typename T1,typename T2>

myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}

void show();

template <typename T1,typename T2>

void myClass<T1,T2>::show()

{

cout<<"I=" <<I<<", J=" <<J<<endl;

}

注意:每个模板类的成员函数前都必须加上模板声明template <typename T1,typename T2> ,然后接下来命名类似于普通类,但必须加上类参数myClass<T1,T2>

// run.cpp

#include "template.h"

#include <iostream>

using namespace std;

void main()

{

//什么一个类的对象类似于普通类对象声明,但必须实例化类模板参数,如:myClass<int ,int > ,其余的调用函数方法跟普通类一样

myClass<int,int>class1(1,2);

class1.show();

myClass<char,char>class2('a','b');

class2.show();

}

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:如何优化C语言代码?
下一篇:Lua与C的交互设计是怎样的?

空指针到底是什么意思?

a[i] = i++ 到底对不对?

C++培训哪家好?全方位对比机构

C/C++中的必须熟记的基础知识

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省