算法与结构课件第一章绪论(华北电力大学科技学院).ppt

上传人:za****8 文档编号:14175542 上传时间:2020-07-09 格式:PPT 页数:40 大小:549.56KB
返回 下载 相关 举报
算法与结构课件第一章绪论(华北电力大学科技学院).ppt_第1页
第1页 / 共40页
算法与结构课件第一章绪论(华北电力大学科技学院).ppt_第2页
第2页 / 共40页
算法与结构课件第一章绪论(华北电力大学科技学院).ppt_第3页
第3页 / 共40页
点击查看更多>>
资源描述
计算机算法设计与分析,North China Electric Power University,Computer Algorithms Design int *p; p= 其中,j是对变量i的一个引用,i的值改变时,j的值也跟着改变。,North China Electric Power University,2.函数和参数传递,1)函数 C+中有两种函数:常规函数和成员函数。其定义都包含四个部 分:函数名、形式参数表、返回类型和函数体。函数的返回值通 过函数体中的return语句返回。return语句的作用是返回一个与 返回类型相同类型的值,并中断程序的运行。 2)参数传递 在C+中调用函数时传递给形参表的实参必须与形参在类型、个 数、顺序上保持一致。参数的传递有两种方式: 按值传递:把实参的值传递给函数局部工作区相应的副本中。函 数使用副本执行必要的计算。 按引用传递:需将形参声明为引用类型,即在参数名前加上符号 this.y1=y1;this.h=h;this.w=w; Rectangle() /析构函数 int GetHeight();/矩形的高 int GetWidth();/矩形的宽 private: int x1,y1,h,w;/(x1,y1)是矩形左下角的坐标,h是高 ; /w是宽 int Rectangle:GetHeight() return h; int Rectangle:GetWeight() return w;,North China Electric Power University,4.类的对象 下面的代码说明了如何声明类Rectangle的对象,以及 如何调用其成员函数。 Rectangle r(0,0,2,3); Rectangle s(0,0,3,4); Rectangle *t= 5.构造函数和析构函数 构造函数:用于初始化一个对象的函数,与类名相同,不能有返 回值和返回类型。 析构函数:用于在一个对象被撤销时删除其数据成员。析构函数 名与类名相同,并在前面加上符号“” 。,North China Electric Power University,North China Electric Power University,6.运算符重载 C+允许为用户定义的数据类型重载运算符。 下面的代码段实现对类Rectangle的运算符“=”的重载。 bool Rectangle:operator=(const Rectangle 其中用到C+中的保留字this,在类的成员函数内部,this表示 一个指向调用该成员函数的对象的指针,因此该对象也可用*this 来表示。 经重载运算符“=”后,即可用运算符“=”来判定两个 Rectangle对象是否相同。,North China Electric Power University,7.友元函数 在类的声明中可使用保留字friend来定义友元函数。友元函 数实际上并不是类的成员函数,它可以是一个常规函数,也可以 是另一个类的成员函数。如果想通过这个函数来存取类的私有成 员和保护成员,就必须在类的声明中给出函数的原型,并在前面 加上friend。 8.内联函数 在函数前面加上一个inline前缀,该函数就被定义成一个内 联函数。内联函数的保留字inline告诉编译器在任何调用该函数 的地方直接插入内联函数的函数体。 9.模板 模板是C+提供的一种新机制,用于增强类和函数的可重用 性。通过使用模板可以定义一个通用的函数max如下: template Type max(Type x,Type y) return xy?x:y;,North China Electric Power University,上述模板定义了一个max函数的家族系列,分别对应用于不 同的类型Type,编译器根据需要创建合适的max函数。 例:int i=max(1,2); double x=max(1.0,2.0); 除了定义通用函数外,模板还可以定义通用类。 例如:利用模板,可以定义一个通用的栈类如下: template class Stack public: Stack(int MaxStackSize=100); bool IsFull(); bool IsEmpty(); void Push(const Type,North China Electric Power University,template Stack:Stack(int MaxStackSize) MaxSize=MaxStackSize; stack=new TypeMaxSize; top= -1; template inline bool Stack:IsFull() if(top=MaxSize-1) return true; else return false; template inline bool Stack:IsEmpty() if(top= -1) return true; else return false; ,North China Electric Power University,template void Stack:Push(const Type,North China Electric Power University,10.动态存储分配 1)运算符new C+的运算符new可用于动态存储分配。该运算符返回一个 指向所分配存储空间的指针。 例:y=new int; *y=10; 2)一维数组 为了在运行时创建一个大小可动态变化的一维浮点数组x,可 先将x声明为一个float类型的指针,然后用new为数组动态地分配 存储空间。 例:float *x=new floatn; 将创建一个大小为n的一维浮点数组。运算符new分配n个浮 点所需的存储空间,并返回指向第一个浮点的指针。然后可用 x0,x1,X2,xn-1来访问每个元素。,North China Electric Power University,3)运算符delete 当动态分配的存储空间已不再需要时应及时释放所占的空间。 在C+中,用运算符delete来释放由new分配的空间。 例:delete y; delete x; 分别释放分配给*y的存储空间和分配给一维数组x的空间。 4)二维数组 C+提供了多种声明二维数组的机制。在许多情况下,当形式 参数是一个二维数组时,必须指定其第二维的大小。例如,a10 是一个合法的形式参数,而a 则不是。为了克服这种限制,可 以使用动态分配的二维数组。例如,下面的代码创建了一个类型为 Type的动态工作数组,这个数组有rows行和cols列。 template void Make2DArray(Type * ,North China Electric Power University,当不再需要一个动态分配的二维数组时,可以用下面的步骤 释放它所占用的存储空间。首先释放在for循环中为每一行所分配 的空间。然后释放为行指针分配的空间。具体实例可描述如下: template void Delete2DArray(Type * 注意:在释放存储空间后将x置为0,以防止用户继续访问已被释 放的空间。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!