设为首页 加入收藏

TOP

C++ chapter 10――模板(二)
2016-04-26 17:12:37 】 浏览:515
Tags:chapter 模板
de *next; }; template //声明模板 class list //定义类模板 { node *head; //此处node为结构体类型模板 int size; public: list(){ head = 0; size = 0; } bool insert(T val); //参数取T类型 bool deletes(T val); //参数取T类型 bool contains(T val); //参数取T类型 void print(); ~list(); }; template list ::~list() //定义函数模板 { node *temp; //node为结构体类型模板 for (node *p = head; p;) { temp = p; p = p->next; delete temp; } } template bool list ::insert(T x) { node *nodes = new node ; if (nodes) { nodes->val = x; nodes->next = head; head = nodes; size++; return true; } return false; } template bool list ::deletes(T x) { node *temp; if (head->val == x) { temp = head->next; delete head; size--; head = temp; return true; } for (node *p = temp = head; p; temp = p, p = p->next) if (p->val == x) { temp->next = p->next; delete p; size--; return true; } return false; } template bool list ::contains(T x) { for (node *p = head; p; p = p->next) if (p->val == x) return true; return false; } template void list ::print() { for (node *p = head; p; p = p->next) cout << p->val << " "; cout << endl; } void main() { list intlist; //定义一个整型链表对象intlist,此时传递进来的模板类型参数为 intlist.insert(34); intlist.insert(54); intlist.insert(78); intlist.insert(76); intlist.insert(54); intlist.print(); list floatlist; //定义一个浮点型链表对象floatlist,此时传递进来的模板类型参数为 floatlist.insert(34.56); floatlist.insert(65.4); floatlist.insert(7534.56); floatlist.insert(364.56); floatlist.print(); list charlist; //定义一个字符串链表对象charlist,此时传递进来的模板类型参数为 charlist.insert("windows"); charlist.insert("object"); charlist.insert("borland"); charlist.insert("virtual_function"); charlist.print(); }

首先定义一个结构体模板,它与类模板用法相同;再定义一个类模板,结构体模板和类模板取同样的模板参数T。

说明:
(1)类模板的说明(包括成员函数定义)不是一个实实在在的类,只是对类的描述,称为类模板(class template)。类模板必须用类型参数将其实例化为模板类后,才能用来生成对象。一般地,其表示形式为:
类模板名 <类型实参表> 对象名(值实参表)
(2)其中<类型实参表>表示将类模板实例化为模板类时所用到的类型(包括系统固有的类型和用户已定义类型),<值实参表>表示将该模板类实例化为对象时其构造函数所用到的变量。一个类模板可以用来实例化多个模板类。
(3)类型参数必须至少在类说明中出现一次。
(4)类模板的成员函数都是函数模板,实现语法和函数模板类似。如果在类中定义(作为inline函数),不需要特别说明。如果在类外定义,则每个成员函数定义都要冠以模板参数说明,并且指定类名时要后跟类型参数。
(5)类模板在表示如数组、表、图等数据结构特别重要,因为这些数据结构的表示和算法不受所包含的元素类型的影响。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇笔试题40. LeetCode OJ (27) 下一篇数据结构与算法――不相交集类的C..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目