第2讲 C++对C的扩充(xsh).ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何:改掉警告错误? 补充:数组的引用(P25) 2.11 const修饰符 #define PI 3.1415926 const float PI=3.1415926; 这个常量是有类型的,它有地址,可以用指针指向这个值,但不能修改它。C++建议用const取代#define定义常量。 注意: (1) 使用const修饰符定义常量时,必须初始化; (2) 常量一旦被定义,在程序中任何地方都不能 再更改。 (3) 如果用const定义的是一个整型常量,int可以省略。 (4) 与#define定义的常量有所不同,const定义的常量可以有自己的数据类型,这样C++编译程序可以进行更加严格的类型检查,具有良好的编译时的检测性。 (5) 函数参数也可以用const说明,用于保证实参在该函数内部不被改动,大多数C++编译器能对具有const参数的函数进行更好的代码优化。例如,通过函数max求出整型数组a[100]中的最大值,函数原型应该是: int max(const int*pa); 这样做的目的是确保原数组的数据不被破坏,即在函数中对数组元素的操作只许读,不许写。 const与指针一起使用的组合情况: (1) 指向常量的指针 指向常量的指针是指一个指向常量的指针变量。const char *pc=abcd; 声明指向常量的指针变量pc,它指向一个字符串常量,由于使用了const,不允许改变指针所指的常量,因此以下语句是错误的: pc[3]=x; × 但是由于pc是一个指向常量的普通指针变量,不是常指针,因此可以改变pc的值。例如以下语句是允许的:pc=jkkk;√ const与指针一起使用的组合情况: (2) 常指针 常指针是指指针本身,而不是它指向的对象声明为常量。例如: char* const pc=“abcd”; // 常指针 pc[3]=x; √ // 合法 pc=dfasdfa; × // 不合法 const与指针一起使用的组合情况: (3) 指向常量的常指针 整个指针本身不能改变,它所指向的值也不能改变。要声明一个指向常量的常指针,二者都要声明为const。例如: const char* const pc=“abcd”; // 指向常量的常指针 pc[3]=x; × // 错误,不能改变指针所指的值 pc=dfasdfa; × // 错误,不能改变指针本身 2.12 字符串 在C++中提供了一种既方便又好用的string类型。下面通过一个简单的例子说明string类型的使用。 【例2.10】字符串类string的使用。 2.13 C++语言中函数的新特性 2.13.1 函数原型(Function Prototype) 2.13.2 内联(inline)函数 2.13.3 带缺省参数的函数 2.13.4 函数重载(overload) 2.13.5 函数模板(function template) C++要求为每一个函数建立原型,用以说明函数的名称、参数个数及类型和函数返回值的类型。 其主要目的是让C++编译程序进行类型检查,即形参与实参的类型匹配检查,以及返回值是否与原型相符,以维护程序的正确性。所以应养成将声明与定义分别编写的编程习惯。 函数原型与函数的定义要在函数的返回类型,函数名和参数的类型及数量这三条线上保持一致。 当然,在写函数原型时,可以省略形参的名字,因为参数名对编译器没有意义,但如果取名恰当的话,这些名字可以起到提示参数用途的作用。 2.13.1 函数原型(Function Prototype) 2.13.2 内联(inline)函数 使用内联函数是一种用空间换时间的措施,若内联函数较长,且调用太频繁时,程序将加长很多。因此,通常只有较短的函数才定义为内联函数,对于较长的函数最好作为一般函数处理。 2.13.2 内联(inline)函数 一般情况下,我们对内联函数做如下的限制: (1) 不能有递归 (2) 不能包含静态数据 (3) 不能包含循环 (4) 不能包含switch和goto语句 (5) 不能包含数组 若一个内联函数定义不满足以上限制,则编译系统把它当作普通函数对待。 【例2.11】内联函数的使用。 2.13.3 带缺省参数的函数 如果在函数说明或函数定义中为形参指定一个缺省值,则称此函数为带缺省参数的函数。当函数调用发生后,在形参表中等号后的各“缺省值”将起实参的传递作用。 如果函数有多个缺省参数,则缺省参数必须是从右向左定义,并且在一个缺省参数的右边不能有未指定缺省值的参数。 void fun(int a=3,int b=6,int c,int d); × void fun(int a=65,i

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档