类模板的写法

类模板的写法

定义一个类模板:

Template < class或者也可以用typename T >
class类名{
//类定义......
};

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

例如:定义一个类模板:

// ClassTemplate.h
#ifndef ClassTemplate_HH
#define ClassTemplate_HH

template<typename T1,typename T2>

class myClass{

private:
     T1 I;
     T2 J;

public:
     myClass(T1 a, T2 b);//Constructor
     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;
}
#endif

// Test.cpp

#include <iostream>
#include "ClassTemplate.h"
using std::cout;
using std::endl;

void main()
{
     myClass<int,int> class1(3,5);
     class1.show();

     myClass<int,char> class2(3,‘a‘);
     class2.show();

     myClass<double,int> class3(2.9,10);
     class3.show();

     system("PAUSE");
}

最后结果显示:

2.非类型模版参数

一般来说,非类型模板参数可以是常整数(包括枚举)或者指向外部链接对象的指针。

那么就是说,浮点数是不行的,指向内部链接对象的指针是不行的。

template<typename T, int MAXSIZE>
class Stack{
Private:
       T elems[MAXSIZE];
…
};

Int main()
{

       Stack<int, 20> int20Stack;
       Stack<int, 40> int40Stack;
…

};

原文地址:https://www.cnblogs.com/pjl1119/p/9136516.html

时间: 2024-10-11 23:04:35

类模板的写法的相关文章

初步C++类模板学习笔记

类模板 实现:在上课时间的定义给它的一个或多个参数,这些参数代表了不同的数据类型.                              -->抽象的类. 在调用类模板时, 指定參数, 由编译系统依据參数提供的数据类型自己主动产生对应的模板类                   -->详细的类. 类模板的定义 C++的类模板的写法例如以下: template <类型參数表> //类型參数表的写法就是:class 类型參数1, class 类型參数2, - class 类模板名

C++提高1 【泛型编程】函数模板 类模板

[本文谢绝转载] [泛型编程] 函数模板 为什么会有函数模板 现象: 函数的业务逻辑一样 函数的参数类型不一样 [最常用]函数模板  显式的调用 [不常用]类型推导 多个参数,参数定义了必须要用 函数模板,实现int类型数组,char字符串排序: 函数模板 与 普通函数的本质区别 函数模板 和 普通函数在一起 的调用型研究: C++是如何支持函数模板机制的? 函数模板机制结论 类模板 类模板的定义 类模板做函数的参数 类模板的派生成普通类 模板类的派生成模板类 复数类,所有函数都写在类的内部,运

函数、类模板

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

类模板(四十八)

我们上节博客介绍了泛型编程思想,那么在 C++ 中是否可以将泛型的思想应用于类呢?答案肯定是显而易见的,在 C++ 中的标准库中,就是一些通用的类模板.我们先来看看类模板有哪些特性,它主要是用于存储和组织数据元素,类中数据组织的方式和数据元素的具体类型无关,如:数组类.链表类.Stack 类等.C++ 中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的功能. 在 C++ 中的类模板是以相同的方式处理不同的类型,并且在类声明前使用 template 进行标识.<

C++中的数据类模板

1,预备知识: 1,模板参数可以是数值型参数(非类型参数): 1,代码示例: 1 template <typename T, int N> 2 void func() 3 { 4 T a[N]; // 使用模板参数定义局部数组: 5 } 6 7 func<double, 10>(); // 使用模板时,数值型参数必须是常量,不能是变量: 2,数值型模板参数的限制: 1,变量不能作为模板参数: 1,是变量的话就不满足准确确定的这个本质: 2,浮点数不能作为模板参数: 1,浮点数本身不

C++--模板的概念和意义、深入理解函数模板、类模板的概念和意义

一.模板的概念与意义 Q:C++中有几种交换变量的方法?定义宏代码与定义函数A.定义宏代码优点:代码复用,适合所有的类型缺点:编译器不知道宏的存在,缺少类型检查B.定义函数优点:真正的函数调用,编译器对类型进行检查缺点:根据类型重复定义函数,无法代码复用 C.泛型编程--不考虑具体数据类型的编程方式Swap泛型写法中的T不是一个具体的数据类型,而是泛指任意的数据类型C++中的泛型编程函数模板--一种特殊的函数可用不同类型进行调用,看起来和普通函数很相似,区别是类型可被参数化函数模板的语法规则1.

C++学习笔记50:队列类模板

队列是只能向一端添加元素,从另一端删除元素的线性群体 循环队列 在想象中将数组弯曲成环形,元素出队时,后继元素不移动,每当队尾达到数组最后一个元素时,便再回到数组开头. 队列类模板 //Queue.h #ifndef QUEUE_H #define QUEUE_H #include <cassert> //类模板的定义 template <class T, int SIZE = 50> class Queue { private: int front, rear, count; T

C++ 类模板三(类模版中的static关键字)

//类模版中的static关键字 #include<iostream> using namespace std; /* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在利用类模板生成类的时候会为每个类生成一个static变量 那么对于类中的static关键字就非常好理解了 static关键字修饰的变量是属于类的 同一个类的对象共享类的static静态变量 类模板中的static修饰的变量数据类型必须是确定的 不可以是类型参数 因为静态变量在类对象之前初始化 这时候还没有通

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