- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ObjectOrientedProgramminginC第一章C的初步知识
Object-OrientedProgramming in C++第一章 C++的初步知识 中国科大学继续教育学院 李艺 leeyi@ 第一章 C++的初步知识 第二章 类和对象 第三章 再论类和对象 第四章 运算符重载 第五章 继承与派生 第六章 多态性与虚函数 第七章 输入输出流 第八章 C++工具 学时分配 总学时:60 讲课:40学时 上机:20学时 课外上机:每周不少于4学时 1.2 用const定义常变量 C语言中,用#define 定义常量: #define PI 3.14159 #define R a+b 它只是在预编译时进行字符置换,将标识符置换成表达式或数字。预编译后,标识符PI,R不再存在。PI,R不是变量,没有类型,不占用存储单元,很容易出错: int a=1;b=2; #define PI 3.14159 #define R a+b coutPI * R * R; 输出的不是3.14159 * (a+b) * (a+b),而是 3.14159 * a+b * a+b。 程序因此出错。 C++进行了改进,用 const 定义常变量。如: const float PI = 3.14159; 它定义了常变量PI,有数据类型,占用存储单元,有地址,可以用指针指向它,只是在程序运行中,此变量的值固定,不能改变。 常变量定义时,const 与指针结合使用,可以有如下三种不同的定义: const float *ptr = 3.14159; //指向常变量的指针,数值3.14159不能改变为其它值 float const *ptr = 3.14159; //指向变量的常量指针,指针地址不能改变 const float const *ptr = 3.14159 ; //指向常量的常量指针 1.3 函数原型申明 C++强制规定,如果函数调用的位置在函数定义之前,则在调用函数之前必须实现作函数原型申明。这一点与C不同,C只是建议,而没有强制 函数申明的一般形式为: 函数类型 函数名(参数表); 最后的分号可不能忘了,否则出错!参数表中可以只指定各个参数的类型,而不指定参数名! 函数申明和定义的示例 //求圆面积,将函数申明和定义分开,在调用函数前先申明它 #include iostream float area( float ); //先申明 void main( ) { float radius; cout“Please input radius: “; cinradius; if (radius0) coutarea(radius )endl; //再使用 } float area( float r) //最后定义 { return r * r* 3.14159;} 程序可以改为如下形式: 1.4 函数的重载(overloading) 什么叫重载? 运算符“”是左移运算符,在C++中,有作为输出算符;而“*”是乘法算符,也是指针符号。这种一个标识符有多种含义用途的现象,旧叫“重载”(overloading)。如果标识符为运算符,就叫“运算符重载”;如果标识符为函数名,就叫“函数重载”。 什么时候用到重载? 用于相类似而又不同的操作。例如,求多个数值的最大数,不同类型的参数,C语言要编写不同的函数: int max1(int a, int b, int c); // 3个整形数值求最大值 float max2(float a, float b); // 2个实形数值求最大值 long max3(long a, long b, long c); // 3个长整形数值求最大值 而C++的做法是重载:将这三个函数名取相同的名字,程序运行时,系统会根据实际参数的不同,调用相近参数的函数: 1.5 函数模板 什么时候使用模板?重载函数的不便之处在于,对于同名的函数要一个一个地编写,编码量很大。对于有些相同功能的函数,如果函数个数相同,可以用另外的方法来解决,这就是模板(Template)。 函数模板的定义形式: Template 类型参数表 返回类型 函数模板名(数据参数表) { 函数模板定义体 } 示例:将上述重载示例改为函数模板。 由此程序可以看到,函数模板比函数重载更方便,但模板只适用于函数的参数个数相同而类型不同,且函数体相同的情况。不满足这种情况时,就只能使用函数重载。 1.6 有默认参数的函数 背景:一般情况下,函数调用时,形参从实参那里取得值。因此要求实参的个数和类型应该与形参相同。但是,有时候,多次调用同一函数时用的是同一实参数,或者调用时还不好确定实参数
文档评论(0)