c++面向对象程序设计教程-第2章

上传人:aa****6 文档编号:54470753 上传时间:2018-09-13 格式:PPT 页数:42 大小:168.50KB
返回 下载 相关 举报
c++面向对象程序设计教程-第2章_第1页
第1页 / 共42页
c++面向对象程序设计教程-第2章_第2页
第2页 / 共42页
c++面向对象程序设计教程-第2章_第3页
第3页 / 共42页
c++面向对象程序设计教程-第2章_第4页
第4页 / 共42页
c++面向对象程序设计教程-第2章_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《c++面向对象程序设计教程-第2章》由会员分享,可在线阅读,更多相关《c++面向对象程序设计教程-第2章(42页珍藏版)》请在金锄头文库上搜索。

1、C语言的局限 类型检查机制相对较弱,程序中的一些错误不能在编译阶段由编译器检查出来; 几乎没有支持代码重用的语言结构; 不适合开发大型程序,当程序的规模达到一定的程度时,程序员很难控制程序的复杂性。,“C主要是为了我的朋友和我不必再使用汇编语言、C语言或其它现代高级语言而设计的,主要功能是可以更方便的编出好程序,让每个程序员更快乐。“Stroustrup,C的特点: 保持与C的兼容; 可读性好,可以直接地在程序中映射问题空间的结构; 生成代码质量高; 比汇编低1020; 比C低5 可重用性、可扩充性、可维护性和可靠性等方面都有了很大的提高; 支持面向对象,可方便构造出模拟现实问题的实体和操作。

2、,常见的C开发环境 Linux下的Kdevelop的集成开发环境;,Linux下的GCC编译环境GCC起初是“GNU C Compiler”后来变更为“GNUCompiler Collection”,MircroSoft Visual C 6.0; MircroSoft C 是MircroSoft公司.Net中的重要组成部分; Borland CBuilder;,Symantec C:Macintosh上著名的编译器,WatCom C:最初为加拿大的一家公司的产品,现在被Sybase公司收购; Optima C:也是Sybase公司的产品,促进了Borland公司开始开发CBuilder的计划

3、; VisualAge C:蓝色巨人 IBM的产品;,C一般特性: 一般格式: /sum.cpp #include int add(int a,int b); /函数原型说明 int main() /主函数 int x,y,sum; /定义三个整型变量 coutx; /从键盘输入变量x的值 ciny; /从键盘输入变量y的值 sum=add(x,y); /调用函数add cout“The Sum is:”sumi;coutx中,x必须是基本数据类型,不能是void类型可以连续输入一连串数据,格式:cinabc两个数据间用空白符(空格、回车、TAB)分隔。 couty;y必须是基本数据类型,不能

4、是void类型;允许连续输出一连串数据,也可以输出表达式的值;couta+bc;,说明: 必须嵌入头文件“iostream.h”; 可以沿用传统的stdio的I/O函数,但建议使用cin和cout; 输入多个数据时注意加入空白符; 可以用操作符对输入输出格式进行控制; 增加换行控制符endl和C中n作用相同;,对输出格式进行控制: #include void main() int x=25;couthexxdecxoctxn; 25 31 换行符的例子 cout“x=”xn; cout“x=”xendl;,3、灵活的局部变量说明 传统C:局部变量说明必须至于可执行代码之前,不允许局部变量说明和

5、可执行代码混合起来。 C:允许在代码中的任何地方说明局部变量,变量从说明点到该变量所在最小分程序末范围内有效;,例子: 函数例子:,for语句的例子:通常认为:在大函数中,在最靠近使用变量的位置说明变量较为合理;而在较短的函数中,把局部变量集中在函数开始处说明较好。,4、结构、联合、枚举名可直接作为类型名 enum bool FALSE , TRUE ; struct string char* ptr; int length; C:enum bool done;struct string str; C:bool done;string str;,5、const修饰符 C:define LIMI

6、T 100 C:const int LIMIT=100; 指向常量的指针:const char * name=“chen”; 不允许改变指针所指的常量name3=a; 错误 可以改变name的值name“zhang”; 正确,常指针:把指针本身而不是指针它指向的对象声明为常量char *const name“chen”; 数据可以改变name3=a; 正确 指针固定name“zhang”; 错误 指向常量的常指针:指针和指针所指的值都不能改变name3=a; 错误name“zhang”; 错误,说明: const int 中int可以省略; const int LIMIT=100 ; 和con

7、st LIMIT100等价; const定义的常量可以有自己的数据类型; 常量一旦建立,在程序的任何地方都不能修改; 与#define定义的常量有所不同,const定义的常量可以有自己的类型,可以进行更加严格的类型检查; 函数参数也可以使用const说明,用以保证实参内部不被改动; int i_Max(const int * ptr);,不安全例子: #include main() int a=1;#define T1 a+a;#define T2 T1-T1;cout“T2 is”T2endl;return 0; 结果:T2 is 2 错误 原因将T2解释为aaaa,安全例子: #inclu

8、de main() int a=1;const T1= a+a;const T2= T1-T1;cout“T2 is”T2endl;return 0; 结果:T2 is 0 正确,6、内置函数 格式:在函数说明前,冠以关键字“inline”,该函数就被说明为内置函数;,说明: 内置函数在被调用前必须进行完整定义,否则编译器将无法知道应该插入什么代码 内置函数消除了define的不安全因素 不安全例子:例子2、8 安全例子:例子2、9 在内置函数体内一般不能有循环语句和开关语句; 在类说明体内定义的函数都是内置函数; 使用内置函数是一种用空间换时间的措施,若内置函数较长,且调用太频繁时,程序将加

9、长很多。因此,只有较短的函数才定义为内置函数,对于较长的函数最好作为一般的函数处理。,不安全例子: #include #define doub(x) x*2 int main() for(int I=1;I=3;I+)coutI“doubled is “doub(I)endl;cout“1+2 doubled is ”doub(1+2)endl;return 0; 错误原因:doub(12)解释成为12*2,安全例子: #include inline int doub(int x) return x*2; int main() for(int I=1;I=3;I+)coutI“doubled

10、is “doub(I)endl;cout“1+2 doubled is ”doub(1+2)endl;return 0;,7、函数原型: 格式:返回类型 函数名(参数表); 函数原型的出现方式 定义在后,调用在前,原型放在调用语句之前; 前,后,可以不使用函数原型; 合乎以上两个要求,程序是等价的。 例子:,int fun(int x , int y) /. ,main() int z; z=fun(4,6); ,int fun(int x , int y);,说明: 参数表中可以不包含参数名字,而只包含它们的类型; 函数定义中函数说明部分参数必须给出名字,且不带分号; long Area(i

11、nt length,int width) 参数说明必须放在函数名后面的括号中,不允许放在函数说明部分和函数体之间; Main()函数不必进行原型说明; C默认的函数返回类型为int,如果一个函数没有返回值,必须在原型中注明为void类型; 函数原型中未注明参数,C假定该函数的参数为空(void); 函数原型的机制已经被C语言采用,纳入ANSI C标准; 8、带有缺省参数的函数 格式:int special(int x5,float y5.3) 说明: 所有缺省值参数都必须出现在不取缺省值参数的右边;,函数调用是,若某个参数省略,则其后的参数都应该省略,采用缺省值; 9、函数重载 C:函数名唯一

12、; C:相同的函数名,而参数类型或参数个数不同 参数类型不同 参数个数不同 说明: 参数个数或者参数类型不同; 与带默认值参数的函数一起使用时,有可能引起二义性; 实参和形参不相符,会进行类型转换工作。,#include int sqare(int i) return i*i; float square(float f) return f*f; double square(double d) return d*d;,int main() int i=12; float f=3.4; double d=5.67; couti*i=square(i)endl; coutf*f=square(f)e

13、ndl; coutd*d=square(d)endl; return 0; ,#inlcude int mul(int x,int y) return x*y; int mul( int x , int y , int z ) return x*y*z ; void main() int a=3 , b=4 , c=5; cout a*b=mul( a , b )endl; couta*b*c=mul( a , b ,c )endl; ,10、作用域运算符 : 格式 :变量名,#include int avar=10; main() int avar; . avar=25; cout“avar is”avarendl; return 0; 结果: avar is 25,#include int avar; main() int avar;avar=25;:avar=10;cout“local avar =”avarendl;cout“global avar =”:avarendl;return 0; 结果: local avar=25 global avar=10,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号