- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
09第九章 类属机制课件
第九章 类属机制 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;9.1.3 类属机制
C++语言的模板
函数模板(类属函数)
函数的形式参数表中某些形式参数的数据类型被参数化
函数模板本身不是函数,经实例化后才得到函数
类模板(类属类)
类的数据成员的类型或成员函数的形参类型被参数化
类属类也不是类,经实例化后才得到具体的类;§9.2 类模板 ;9.2.1 类属类的定义
例1. 用类模板对数组进行排序、检索和求和
#include iostream.h
template class T //声明一个形式类属参数T
class ARRAY {
T *set; // 定义数组元素集合
int n; // 定义数组元素个数
public: ARRAY( T *data, int i)
{ set= data ;
n= i;
}
~ARRAY() { }
void sort(); // 排序
int seek(T key); // 检索
T sum(); // 求和
};;9.2.1 类属类的定义
template class T // 注意在类外声明类模板的
void ARRAYT::sort() // 成员函数的形式
{ int i, j; T d;
for (i=1; in; i++)// 冒泡排序
for (j=n-1; j=i; j--) {
if (set[j-1] set[j]) {//交换set[j-1]和set[j]的值
d = set[j-1];
set[j-1] = set[j];
set[j] = d ;
}
}
};9.2.1 类属类的定义
template class T
int ARRAYT::seek(T key)
{ for (int i=0; in; i++)
if (set[i]==key) return i; // 找到,则返回key在数组中的位置
return -1; // 找不到,返回-1
}
template class T
T ARRAYT::sum()
{ T s=0;
for (int i=0; in; i++)
s+= set[i];
return s;
};9.2.1 类属类的定义
例2. 类属链表类
//程序:GLIST.HPP
//功能:定义链表类属类LIST的界面
template class ELEMENT_TYPE
class LIST {
public:
LIST(int length)
{
vector=new ELEMENT_TYPE[length];
size=length;
return;
}
~LIST()
{
delete [] vector;
return;
};9.2.1 类属类的定义
//检索链表中的元素,利用重载运算符[]实现,函数返回值可作为左值
ELEMENT_TYPE operator[](int index)
{
return vector[index];
}
private:
ELEMENT_TYPE *vector;
int size;
};;9.2.1 类属类的定义
例3. 类属堆栈类
//程序:GSTACK.HPP
//功能:定义堆栈类属类STACK的类界面和类的实现
#include iostream.h
#include process.h
#ifndef __GSTACK_HPP
#define __GSTACK_HPP
template class ELEMENT_TYPE
class STACK {
public:
STACK();
void push(ELEMENT_TYPE obj);
void pop();
ELEMENT_TYPE get_top();
int is_empty();;9.2.1 类属类的定义
private:
struct NODE {
ELEMENT_TYPE element;
NODE *link;
};
NODE *top;
};
template class ELEMENT_TYPE
STACKELEMENT_TYPE::STACK() // 构造函数
{
top=NULL; // 将栈顶置为空
return;
}
您可能关注的文档
最近下载
- 2022年会理县社区工作者招聘笔试试题及答案解析.docx VIP
- 2025年人教版四年级下册语文期末考试题(5套)及答案.docx VIP
- 医院医疗设备维修工作流程.docx VIP
- 2023地下工程止水帷幕施工技术规程.docx VIP
- 2022HY6102BG消防应急广播设备安装使用说明书.docx VIP
- 2025精准饲喂使用说明书.pdf VIP
- AWC NDS-2018 木材建筑国家设计规范(NDS).pdf VIP
- (含土建井道及电梯安装施工方案)既有住宅老旧小区加装电梯项目施工组织设计方案.doc VIP
- 偏心受压构件承载力.doc VIP
- 幼儿园开展民间游戏存在的问题及改进策略.docx VIP
文档评论(0)