`
ErinToJerry
  • 浏览: 56629 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

C++中的类模板Template可以什么时候用

阅读更多

多个类有着共同操作,但是数据类型不同。如下的3个类,getMax的功能是相同的,即求两个数中的最大值,仅仅是数据类型不同。

 

class Compare_int
{
	private:
		int x,y;
	public:
		Compare(int a,int b)
		{
			x=a;
			y=b;
		}
		int getMax()
		{
			return (x>y)? x:y;
		}
};

 

class Compare_float
{
	private:
		float x,y;
	public:
		Compare(float a,float b)
		{
			x=a;
			y=b;
		}
		float getMax()
		{
			return (x>y)? x:y;
		}
};

 

class Compare_char
{
	private:
		char x,y;
	public:
		Compare(char a,char b)
		{
			x=a;
			y=b;
		}
		char getMax()
		{
			return (x>y)? x:y;
		}
};

 

 

我们用一个类模板减少重复性的工作。

 

template<class dataType>
class Compare
{
	private:
		dataType x,y;
	public:
		Compare(dataType a,dataType b)
		{
			x=a;
			y=b;
		}
		dataType getMax()
		{
			return (x>y)? x:y;
		}
};

 

template是声明各模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个。

声明类模板要增加一行:
    template<class 类型参数名>
如template<class dataType>其中的类型参数名为虚拟的类型参数名,以后会被实际的类型名替代。如例子中的

dataType将会被int,float,char等替代。

 

 

如果说类是对象的抽象,对象是类的实例。那么类模板是类的抽象,类是类模板的实例。


实例化时必须用实际的类型名去替代虚拟的类型,如Compare<int> cmp1(3,7);

 

 

完整的代码:

#include "stdafx.h"
#include <iostream>

using namespace std;

template<class dataType>
class Compare
{
	private:
		dataType x,y;
	public:
		Compare(dataType a,dataType b)
		{
			x=a;
			y=b;
		}
		dataType getMax()
		{
			return (x>y)? x:y;
		}
};

int main(int argc, char* argv[])
{
	//类模板的实例化(To 类)and类的实例化(To 对象)
	Compare<int> cmp1(3,7);
	cout<<cmp1.getMax()<<" is the Maximum of two Integer numbers"<<endl;

	Compare<float> cmp2(12.3,23.4);
	cout<<cmp2.getMax()<<" is the Maximun of two Float numbers"<<endl;

	Compare<char> cmp3('a','b');
	cout<<cmp3.getMax()<<" is the Maximun of two Char numbers"<<endl;

	return 0;
}

 

1
0
分享到:
评论

相关推荐

    C++栈类模板

    C++栈类模板 template class Stack { public: Stack(void); void Push(const T &item;); //将元素item压入栈 T Pop(void); //将栈顶元素弹出栈 void ClearStack(void); T Peek(void)const; //访问栈顶元素 ...

    用c++实现一个类模板

    在C++编程语言中,类模板是一种非常强大的特性,它允许我们创建通用的类,能够处理多种数据类型。国防科技大学大一年级的程序...此外,对C++模板的深入理解对于将来学习STL(标准模板库)和其他高级C++特性至关重要。

    C++链表类 模板类

    C++链表类 模板类 #include #include #include "LinkedList.h" using namespace std; template Node&lt;T&gt; *LinkedList&lt;T&gt;::GetNode(const T& item, Node* ptrNext) //生成新结点 { Node&lt;T&gt; *p; p = new Node...

    C++ 模板类 简单试用

    C++模板类是C++语言中的一个重要特性,它允许我们编写通用代码,这些代码可以用于处理不同类型的数据。模板类的出现使得程序员可以创建泛型(generic)容器、算法和其他工具,无需为每种数据类型单独编写代码。下面...

    用c++的类模板实现通用堆栈结构

    本文将详细介绍如何利用C++中的类模板特性来构建一个通用的堆栈结构,该结构既可以适用于顺序存储(使用数组实现),也可以应用于链式存储(使用指针实现)。通过类模板,我们能够创建灵活的数据结构,从而提高代码...

    c++模板类实现快速排序

    以下是一个简单的C++模板类实现快速排序的示例: ```cpp template void quickSort(T arr[], int left, int right) { if (left ) { int pivotIndex = partition(arr, left, right); quickSort(arr, left, pivot...

    C++单链表类模板 模板

    在C++编程中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的指针。...通过这个项目,不仅可以掌握单链表的基本操作,还能提升对C++模板和内存管理的掌握。

    C++ 链表类模板 清华大牛精心编写

    通过分析这些代码,你可以深入理解链表数据结构在C++中的实现细节,以及如何使用类模板来抽象数据结构。 此外,由于该资源来自清华大学,我们可以期待其代码设计和实现遵循了良好的编程实践,包括错误处理、内存...

    c++template 模板介绍

    C++中的模板(Template)是其泛型编程的基础,它允许程序员编写不依赖于特定数据类型的函数或类。模板提供了一种方式来实现通用的代码,这样就可以在各种数据类型上重用相同的逻辑,而无需为每种类型分别编写代码。 ...

    c++ 模板 类 代码 参考

    C++模板是C++语言中的一个强大特性,用于实现泛型编程。泛型编程是一种编程范式,允许我们编写不依赖于特定数据类型的代码,从而提高代码的复用性和灵活性。在C++中,模板主要分为函数模板和类模板。 1. 函数模板:...

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

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

    C++类模板实现的队列

    通过阅读和理解这个文件,可以更深入地学习类模板和队列数据结构的实现细节,这对于提升C++编程技巧和理解数据结构是很有帮助的。 总结来说,C++类模板提供了一种编写泛型代码的方法,使得我们可以创建一个适用于...

    数据结构:基于C++模板类的实现

    《数据结构:基于C++模板类的实现》是一本深入探讨如何使用C++语言来构建高效数据结构的书籍。在C++中,模板类是一种强大的工具,它允许我们编写通用的代码,适用于不同类型的对象,这在处理数据结构时特别有用。通过...

    c++中的类模板详细讲述

    - **模板参数重用**: 在不同的类模板或模板声明中,可以重复使用相同的模板参数名。 - **模板参数名的可变性**: 类模板的前向声明和定义中,模板参数的名字可以不同。 - **模板参数的默认值**: 类模板的模板参数可以...

    C++ 6.0 Template(模板库)参考手册.zip

    C++ 模板是编程语言中的一个强大特性,它允许程序员创建泛型代码,使得同一段代码能够处理不同类型的参数。在C++ 6.0版本中,模板库提供了丰富的功能,包括容器、算法和迭代器等,这些都极大地提高了代码的重用性和...

    C++课件chap10 类模板.PPT

    在某些情况下,我们可能希望显式地为特定类型实例化一个函数模板,这时可以使用显式模板实例化,如 `template &lt;&gt; void fun(int count)`。这在需要覆盖默认行为或者避免编译器自动生成的实例时非常有用。 接下来,...

    c++模板类实现的链式队列

    "C++模板类实现的链式队列" 本篇文章将详细介绍C++模板类实现的链式队列,包括队列的链式存储结构、队列类的设计、函数实现等方面的知识点。...通过本文,读者可以了解C++模板类的使用和队列的实现细节。

    《 C++模板》和《C++模板元编程》两本

    C++模板是C++语言中的一个强大特性,它允许程序员创建泛型代码,即能够处理多种数据类型的代码。模板在C++中分为两种主要类型:函数模板和类模板。函数模板用于定义可以接受不同类型参数的函数,而类模板用于创建...

Global site tag (gtag.js) - Google Analytics