`
fpwjp
  • 浏览: 45975 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

函数模板和类模板

    博客分类:
  • C++
F# 
阅读更多

模板

       模板(template)是一个将数据类型参化的工具,它提供了一种将代码与数据类相脱离的机制,即代码不受具体的数据类型的影响。模板分为函数模板和类模板两种。

      (1)函数模板

      函数模板是一种不说明某些参数的数据类型的函数。例如,下面定义了一个可对任何类型变量进行操作(求绝对值)的函数模板。

 template <class T> //或写成:template <typename T>
 T abs(T val)
{
       return val<0 ? -val : val;
 }

   

   在函数模板被调用时,编译器根据实际参数的类型确定模板参数T的类型,并自动生成一个对应的函数,即模板函数。模板参数的类型不同,生成的模板函数也不同。

 

     例 1 函数模板的定义和使用

#include <iostream.h>

template <class T>			//定义模板
T abs(T val)				//定义函数模板
{
	return val<0 ? -val : val;
}

void main()
{
	int i=100;
	cout <<abs(i)<<endl;	//类型参数T替换为int
	long l=-12345L;
	cout <<abs(l)<<endl;	//类型参数T替换为long
	float f=-125.78F;
	cout <<abs(f)<<endl;	//类型参数T替换为float
}

 

     定义函数模板时也可以使用多个类型参数,这时每个类型参数前面都要加上关键字class或typename,其间用逗分隔,其形式如下所示。

      template <class T1,class T2,class T3>

 

     例 2 使用多个类型参数的函数模板

#include <iostream.h>

template <class T1,class T2>
T1 Max(T1 x,T2 y)
{
	return x>y ? x: (T1)y;
}

void main()
{
	int i=100;
	float f=-125.78F;
	cout <<Max(i,f)<<endl;			//类型参数T1替换为int,T2替换为float
}

 

   (2)类模板

         使用多个类型参数的类模板

#include <iostream.h>

template <class T1,class T2>			//使用2个类型参数
class MyTemClass						//定义类模板
{
private:
	T1 x;
	T2 y;
public:
	MyTemClass(T1 a,T2 b) { x=a;y=b; }	//构造函数
	void ShowMax()						//输出最大的数据成员
	{
		cout <<"MaxMember="<<(x>y?x:y)<<endl;
	}
};

void main()
{
	int a=100;
	float b=123.45F;
	MyTemClass<int,float> mt(a,b);	//声明类模板的对象
	mt.ShowMax();
}

 

分享到:
评论

相关推荐

    c++函数模板和类模板计实验报告

    C++中的函数模板和类模板是泛型编程的重要组成部分,它们允许我们编写更为通用的代码,从而能够处理不同数据类型的对象。在这个实验报告中,我们将深入理解这些概念,并通过具体的编程实践来掌握它们。 首先,我们...

    C++模板(包括函数模板和类模板)

    ### C++模板(包括函数模板和类模板) #### 模板概述 模板是C++语言的一个强大特性,它允许开发者编写能处理不同数据类型的通用代码。通过使用模板,程序员能够编写出灵活且可复用的代码,从而显著提高开发效率并...

    函数模板与类模板.docx

    C++提供了两种模板机制:函数模板和类模板。 一、函数模板 函数模板是C++中一种常用的模板机制,它可以建立一个通用的函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表。函数模板的声明和...

    学习C++的函数模板和类模板

    学习 C++ 的函数模板和类模板 在 C++ 编程语言中,模板(Template)是一种非常重要的概念。它可以帮助我们编写更加灵活和可重用的代码。今天,我们将学习 C++ 的函数模板和类模板。 一、为什么使用模板? 在算法...

    实验12 函数模板和类模板.docx

    实验12的主题聚焦在函数模板和类模板的使用上,这是C++编程中非常重要的概念。函数模板允许我们创建能够处理不同类型数据的通用函数,而类模板则让我们能定义可以适用于多种数据类型的类。 首先,函数模板是C++中一...

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

    C++中的模板是其强大的特性和核心部分,主要分为函数模板和类模板,它们都是实现参数化多态的重要手段。参数化多态允许程序员创建通用的代码,这些代码可以应用于多种数据类型,从而提高代码的复用性和灵活性。 **...

    模板-函数模板与类模板.ppt

    模板分为两种主要类型:函数模板和类模板。 1. **函数模板**: - 函数模板是C++中提供的一种方式,通过它可以用一种通用的方式编写函数,以支持多种数据类型。例如,`abs` 函数用于计算数值的绝对值,通常需要为...

    C++函数重载•函数模板•类模板.doc

    C++函数重载、函数模板、类模板 C++函数重载是指在同一个作用域内,允许多个函数具有相同...函数重载、函数模板和类模板是C++中的三个强大的特性,它们可以帮助我们编写更加灵活和通用的代码,以适应不同的应用场景。

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

    函数模板和普通函数区别结论:  函数模板不允许自动类型转化  普通函数能够进行自动类型转换  函数模板和普通函数在一起,调用规则:  1 函数模板可以像普通函数一样被重载  2 C++编译器优先考虑普通函数 ...

    简单类与函数模板实验报告

    实验报告的主题是“简单类与函数模板”,涵盖了C++中的面向对象编程和泛型编程的基础概念。以下是关于这些知识点的详细说明: 1. **简单类(Simple Class)**: - 在C++中,类是一种用户自定义的数据类型,它封装...

    函数模版和类模板

    模板分为两种主要类型:函数模板和类模板。本文将深入探讨这两种模板的概念、工作原理以及如何通过实例来理解和应用它们。 首先,我们来看函数模板。函数模板是一种通用的函数定义,它不绑定到特定的数据类型。当...

    P167~184C++类和函数模板学习笔记.docx

    通过本文档,读者可以了解C++泛型编程的思想,掌握函数模板和类模板的使用方法,并且了解两者的区别。 一、函数模板 函数模板是C++语言中的一种泛型编程技术,允许开发者定义一个通用的函数,可以处理不同的数据...

    6、函数模板和类模板.mmap

    模板知识体系大纲与细节知识点(使用Mindjet MindManager打开)

    01-PPT1函数模板类模板.pptx

    【函数模板】 函数模板是C++中一种强大的...总结来说,函数模板和类模板是C++中泛型编程的基础,它们提高了代码的复用性和灵活性,允许我们在不指定具体数据类型的情况下编写通用的代码,从而适应多种数据类型的需求。

    c++模板函数精讲和仔细分析

    模板函数可以分为两种类:函数模板和类模板。 函数模板是指使用模板参数来定义函数的返回类型和参数类型的函数。函数模板的定义一般形式是:template &lt;class T&gt; T 函数名(T a, T b){...}。其中,T 是模板参数,...

    .NET代码生成器 C# 版 (可自定义模板函数和模板类,及视图实体)

     可定义函数模板和类模板,使代码生成更加通用化。 说明:这需要事先安装.net framework 3.5 。这个完全出自本人之手。有什么建议望指正。 邮箱:hp_co@qq.com 。 类似于李天平的,但那个太死了,这个可以...

    C++模板学习\模板的概念\函数模板的写法

    模板可以分为两类:函数模板和类模板。 ##### 函数模板的一般形式 函数模板的基本结构如下: ```cpp template 返回类型 函数名(形参表) { // 函数定义体 } ``` 这里的关键字`template`用于声明一个模板,`...

    C++函数模板与类模板实例解析

    本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下: 泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上...

    C++课件chap10 类模板.PPT

    总的来说,C++的模板机制,特别是函数模板和类模板,极大地提高了代码的重用性和灵活性。通过模板,我们可以编写出高度抽象和泛化的代码,这不仅减少了重复工作,还使得程序设计更加模块化和易于维护。同时,STL的...

    后端 / C++ 类 封装 继承 多态 stl容器 虚函数 纯虚函数 友元函数 模板

    8. **模板(Templates)**:C++模板提供了泛型编程的能力,可以创建函数模板和类模板,用于编写不依赖特定类型的操作。这使得代码更具通用性,减少了重复编写类似功能的代码。 9. **STL容器(Standard Template ...

Global site tag (gtag.js) - Google Analytics