- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第02章C对C的扩充C课件
(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的指针变量,该指针是指向字符型数据的常指针,用“abcd”的地址初始化该常指针。创建一个常指针,就是创建不能移动的固定指针,但是它所指的数据可以改变。例如: pc[3]= ′x′; // 合法 pc=dfasdfa; // 不合法 const与指针一起使用的组合情况: (3) 指向常量的常指针 整个指针本身不能改变,它所指向的值也不能改变。要声明一个指向常量的常指针,二者都要声明为const。例如: const char* const pc=abcd; // 指向常量的常指针 这个语句的含义为:声明一个名为pc的指针变量,它是一个指向字符型常量的常指针,用“abcd”的地址初始化该指针。以下两个语句都是错误的: pc[3]= ′x′; // 错误,不能改变指针所指的值 pc=dfasdfa; // 错误,不能改变指针本身 2.12 字符串 除了计算外,文本处理也是编程过程中一个非常重要的方面。在C语言中,使用字符数组和字符指针实现字符串;但是在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) 在执行程序过程中如果要进行函数调用,则系统要将程序当前的一些状态信息存到栈中,之后进行虚实结合,同时转到函数的代码处去执行函数体语句,这些参数保存与传递的过程中需要时间和空间的开销,使得程序执行效率降低,特别是在程序频繁地进行函数调用以及函数代码段比较少时,这个问题会变得更为严重。为了解决这个问题,C++引入了内联函数机制 使用内联函数是一种用空间换时间的措施,若内联函数较长,且调用太频繁时,程序将加长很多。因此,通常只有较短的函数才定义为内联函数,对于较长的函数最好作为一般函数处理 2.13.2 内联(inline)函数 一般情况下,我们对内联函数做如下的限制: (1) 不能有递归 (2) 不能包含静态数据 (3) 不能包含循环 (4) 不能包含switch和goto语句 (5) 不能包含数组 若一个内联函数定义不满足以上限制,则编译系统把它当作普通函数对待 【例2.11】内联函数的使用 2.13.2 内联(inline)函数 如果在函
文档评论(0)