类模板 template<class T>

参考网址:http://c.biancheng.net/cpp/biancheng/view/213.html

// demo3.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

template <class T>
class test
{
private:
	T a,b;
public:
	test(T m,T n)
	{
		a=m;
		b=n;
	}
	T max()
	{
		return (a>b)?a:b;
	}
	T min();
};
template<class T>
T test<T>::min()
{
	return (a>b)?b:a;
};

int _tmain(int argc, _TCHAR* argv[])
{
	test <int> test1(2,3);
	cout<<test1.max()<<endl;
	cout<<test1.min()<<endl;
	test<float> test2(32.12,12.458);
	cout<<test2.max()<<endl;
	cout<<test2.min()<<endl;
	test<char> test3(‘a‘,‘A‘);
	cout<<test3.max()<<endl;
	cout<<test3.min()<<endl;
	return 0;
}

使用类模板的好处就是,可以实现类的成员函数的复用而不用受数据类型的影响。

需要注意的,当把成员函数的实现放在类的外部时,例如上述test类的min()函数,需要加上:

template<class T>   //必不可少的
T test<T>::min()    //不要忘记<T>

main函数中定义test类的实例化对象时,也需要注意格式。

时间: 2024-10-07 00:41:07

类模板 template<class T>的相关文章

C++类模板 template &lt;class T&gt;

C++在发展的后期增加了模板(template )的功能,提供了解决这类问题的途径.可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数. 比如: class Compare_int class Compare_float 都是比较大小的函数,只是参数类型不同,于是用一个类模版综合成一个函数: template <class numtype> //声明一个模板,虚拟类型名为numtype class Compare //类模板名为Compare { public : Compare(nu

c++类模板之间友元函数调用

1 #include <stdio.h> 2 #include <iostream> 3 4 using namespace std; 5 6 template<typename T> class BTree; 7 8 /***************************节点类模板*********************************/ 9 template<typename T> 10 class BTreeNode{ 11 friend

【C/C++学院】(11)泛型编程/函数模板/类模板

1.泛型编程基础 #include "iostream" using namespace std; void swap(int &a, int &b) { int c; c = a; a = b; b = c; } void swap(float &a, float &b) { float c; c = a; a = b; b = c; } void main() { int a = 1, b = 2; swap(a, b); float a1 = 1,

C++学习笔记47:链表的概念与结点类模板

学堂在线学习笔记 链表的概念与结点类模板 顺序访问的线性群体--链表类 链表是一种动态数据结构,可以用来表示顺序访问的线性群体: 链表是由系列结点组成,结点可以在运行时动态生成: 每一个结点包括数据域和指向链表中下一个结点的指针(即下一个结点的地址).如链表中每个结点中只有一个指向后继结点的指针,则该链表称为单链表: 单链表的结点类模板 template <class T> void Node<T>::insertAfter(Node<T> *p) { //p结点指针域

[2016-04-23][C++类模板的一些事儿]

定义(关于类模板和模板类) 类模板:在类里面使用了 模板类型,即满足如下结构就是类模板 template <typename T> class Array{ T* p; } ; 模板类:类模板实例化之后的对象就叫模板类 使用 实例化必须指定类型, 通过 类名后面加上 <类型> 来指明类型 Array<int> a; 注意 没有指定类型是不能实例化的, 没有实例化的变量是不能使用的!!! template <typename T> T a; cin>&g

C++:类模板与模板类

6.3 类模板和模板类 所谓类模板,实际上是建立一个通用类,其数据成员.成员函数的返回值类型和形参类型不具体指定,用一个虚拟的类型来代表.使用类模板定义对象时,系统会实参的类型来取代类模板中虚拟类型从而实现了不同类的功能. 定义一个类模板与定义函数模板的格式类似,必须以关键字template开始,后面是尖括号括起来的模板参数,然后是类名,其格式如下: template <typename 类型参数> class 类名{       类成员声明 }; 或者 template <class

c++类模板深度剖析

1.类模板的泛指类型可以定义多个 template <typename T1, typename T2> class Test { public: void add(T1 a, T2, b); }; 使用时: Test<int, float> t1; //T1的泛指类型就是int, T2的泛指类型就是float. 2.类模板的特化类型 (1)意思就是如果定义了一个类模板,这个类模板的参数有多个,但是如果当使用这个类模板的时候,我们传递参数时,参数的类型是一样的话,编译器就会将类模板

函数、类模板

泛型程序设计 算法实现时不指定具体要操作的数据的类型.适用于多种数据结构. 函数模板 Template <class 类型参数1,class类型参数2,…..> 返回值类型 模板名(形参表) { 函数体: } 函数模板可以重载,只要它们的形参表不同即可. C++编译器遵循以下优先顺序: 先找参数完全匹配的普通函数(非由模板实例化而得的函数) 再找参数完全匹配的模板函数 再找实参经过自动类型转换后能匹配的普通函数 上面的都不符合则报错. 可以在函数模板中使用多个类型参数,可以避免二义性. #in

单链表的结点类模板

C++语言程序设计进阶 (2015年秋) 郑莉教授 http://www.xuetangx.com/courses?org=-1&cid=117&page_type=0&page=2 单链表 //单链表的结点类模板 template <class T> class Node{ private: Node<T> *next;//后继结点的指针 public: T data; Node(const T& item,Node<T>*next =