- 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;
}
您可能关注的文档
- 0513下午(商仲)天津实习律师培训课件.ppt
- 052.IP访问列表课件.ppt
- 05Windows2000Server技术基础课件.ppt
- 05_STEP 7数据类型和变量课件.ppt
- 05elasticity课件.ppt
- 05建设工程计价办法课件.ppt
- 05层叠样式、模板与库课件.ppt
- 05债务重组课件.ppt
- 05第五章 企业偿债能力分析——051108课件.ppt
- 05_CC++漏洞_Shellcode课件.ppt
- 2025年中国锻铁围栏市场调查研究报告.docx
- 2025年中国椭圆型市场调查研究报告.docx
- 2025年中国无蔗糖原味豆浆市场调查研究报告.docx
- 2025-2031年中国泛在电力物联网行业发展运行现状及投资潜力预测报告.docx
- 2025年中国制袋机零件市场调查研究报告.docx
- 2025年中国智能除垢型电子水处理仪市场调查研究报告.docx
- 2025-2031年中国甘肃省乡村旅游行业市场深度研究及投资策略研究报告.docx
- 2025-2031年中国干海产品行业市场发展监测及投资战略规划报告.docx
- 2025年中国全铝图解易拉盖市场调查研究报告.docx
- 2025年中国人造毛皮服装市场调查研究报告.docx
文档评论(0)