苏州大学计算机科学与技术学院面向对象与C++程序设计课件 第四讲.pptVIP

  • 0
  • 0
  • 约4.01千字
  • 约 32页
  • 2019-05-14 发布于广东
  • 举报

苏州大学计算机科学与技术学院面向对象与C++程序设计课件 第四讲.ppt

第四讲C++对C的扩展功能 苏州大学计算机科学与技术学院 注释 C语言注释 /* */ C++注释 /* */ 注释一段 // 注释一行或一行的后半部分 更加灵活 良好注释可以增强程序可读性 注释是调试程序的常用手段 定义局部变量 C语言 规定局部变量必须定义在函数的第一个可执行语句之前 古板 C++ 只要保证在使用之前定义 按需定义,方便灵活 引用 引用是别名 int i,j; int ri=i; //建立一个int型的引用ri,并将其 //初始化为变量i的一个别名 j=10; ri=j;//相当于 i=j; 与取地址符类似 如何区分? 引用的类型和被引用类型应该相同 引用(续) 声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象。 一旦一个引用被初始化后,就不能改为指向其它对象。 C语言函数参数的传递 按值传递:最多 按地址传递:靠数组和指针实现 C++添加了引用传递参数 例 输入两个整数交换后输出 #includeiostream.h void Swap(int a, int b); int main( ) { int x(5), y(10); coutx=x y=yendl; Swap(x,y); coutx=x y=yendl; return 0; } Swap用传值方法编写 void Swap(int a, int b) { int t; t=a; a=b; b=t; } 运行结果(不能交换) x=5 y=10 x=5 y=10 Swap用传址方法编写 void Swap(int* a, int* b) { int t; t=*a; *a=*b; *b=t; } Main中调用语句需要修改为 Swap(x,y) 运行结果: x=5 y=10 x=10 y=5 Swap用传引用方法 void Swap(int a, int b) { int t; t=a; a=b; b=t; } 运行结果: x=5 y=10 x=10 y=5 引用(续) 引用作为形式参数的优点 书写简单 高效(节约存储) 可以从函数中带回值 函数需要返回多个值,可以使用 内联函数 声明时使用关键字 inline。 编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销。 注意: 内联函数体内不能有循环语句和switch语句。 内联函数的声明必须出现在内联函数第一次被调用之前。 是请求,不是命令 以空间换时间 内联函数例子 #includeiostream.h inline double CalArea(double radius) { return 3.14*radius*radius; } int main( ) { double r(3.0); double area; area=CalArea(r); coutareaendl; return 0; } 具有缺省参数值的函数 函数在声明时可以预先给出默认的形参值 调用时如给出实参,则采用实参值 否则采用预先给出的默认形参值 具有缺省参数值的函数(续1) 可以提供多个参数的,但必须靠右原则 否则导致二义性 例: int add(int x,int y=5,int z=6) //正确 int add(int x=1,int y=5,int z) //错误 int add(int x=1,int y,int z=6) //错误 具有缺省参数值的函数(续2) 也可以通过函数声明的方式提供缺省参数值 缺省形参值的作用域 在相同的作用域内,缺省形参值的说明应保持唯一,但如果在不同的作用域内,允许说明不同的缺省形参。 例: int add(int x=1,int y=2); void main(void) { int add(int x=3,int y=4); add( ); //使用局部缺省形参值(实现3+4) } void fun(void) { ... add( ); //使用全局缺省形参值(实现1+2) } 重载 面向对象的重要特征之一 静态的多态 所谓重载就是同一个符号在不同的上下文中代表不同的含义。 分类 重载函数 重载运算符 方便使用,便于记忆 一个实际问题 C语言中求绝对值 int abs(int) double fabs(double) long labs(long) 函数的调用者负担大 能否三个函数具有相同名称? 重载函数 重载函数 功能相近的函数在相同的作用域内具有相同函数名 要求: 函数形式参数类型不同 int a

文档评论(0)

1亿VIP精品文档

相关文档