第1章C基础.ppt
《第1章C基础.ppt》由会员分享,可在线阅读,更多相关《第1章C基础.ppt(56页珍藏版)》请在三一文库上搜索。
1、面向对象程序设计C+ 第一章 C+ 基础,2,教材: 甘玲,石岩,李盘林,解析C+面向对象程序设计,清华大学出版社,2008 参考书: 1.Ian Graham,面向对象方法、原理与实践,北京:机械工业出版社。 2. Grady Booch, James Rumbaugh, Ivar Jacobson,UML用户指南,北京:机械工业出版社。 3. Bruce Eckle,Thinking in C+,北京:机械工业出版社。,3,主要内容,从C到C+ C+对C的扩充,4,从C到C+,C语言是1972年由贝尔实验室的Dennis Ritchie在B语言的基础上开发出来的。1989年美国国家标准协会
2、制定了C语言的标准(ANSI C)。Kernighan和Ritchie(K&R)在著名的The C Programming Language(第二版)一书中对ANSI C有详细的阐述。1999 年,ISO/IEC 9899:1999 标准(简称C99)。,5,从C到C+,C+是由贝尔实验室的Bjarne Stroustrup设计和实现的。 C+最初的版本被称作“带类的C”,1980年投入使用。当时它只支持系统程序设计和数据抽象技术。1983年C+开始全面支持面向对象程序设计,并正式命名为C+。在1987至1989年间,支持泛型程序设计的语言机制也被加进了C+。 C+的标准化工作从1989年开始
3、,于1994年制定了ANSI C+标准草案,1997年ANSI C+标准正式通过并发布,后经不断完善,于1998年11月被国际标准化组织(ISO)批准为国际标准(ANSI/ISO C+)。ANSI/ISO C+是一个统一、完整、稳定的系统,并拥有一个强大的标准程序库。,6,从C到C+,与C语言相比,它是一种崭新的程序设计语言 : 支持面向对象程序设计 支持泛型程序设计(generic programming) 功能强大的标准库 C+语言是C 语言的超集,是一个更好的C,7,从C到C+,一个最简单的C+程序 /This program outputs “Hello, world! ” /to t
4、he screen. #include using namespace std; int main() cout“Hello,world!n“; return 0; ,单行注释,标准库文件没有.h,使用名字空间,具有返回类型,C+的输入/输出库,8,C+编译系统提供的头文件有两类: 一类是标准的C+库头文件,这些头文件不带“.h”;这种写法也适合标准的C库头文件,但是必须使用前缀字符“c”。 另一类是非标准的C+库头文件,这些头文件带“.h”。在连接时,编译系统会根据头文件名自动确定连接哪一个库。,使用标准C+库时,在所有的include指令之后,需要加入语句: using namespace
5、 std;,从C到C+,9,名字空间,C+标准库中的类和函数是在名字空间std中声明的 名字空间可以消除那些因重名而导致的命名冲突 能在名字空间以外声明或定义的实体,同样也能在名字空间之内声明或定义。 一个名字空间由关键字namespace开始,通常后接一个标识符来标识名字空间。在名字空间开始和结束的地方分别用左右大括号标记。,10,假设两个库都有变量inflag,那么在名字空间内定义的语法为:,namespace mfc int inflag; namespace cwl int inflag; ,mfc:inflag=2; cwl:inflag=-3;,using mfc:inflag;
6、inflag=2; cwl:inflag=-3;,名字空间,11,无名的名字空间,C+允许使用没有名字的名字空间 由于名字空间没有名字,因此无法在其它文件中引用 无名名字空间内的成员的作用域为本文件从声明无名命名空间的位置开始到文件结束,namespace int inflag; ,12,简单的输入/输出,C+本身没有定义输入输出操作,而是由一个I/O流类库提供的。流类对象cin和cout分别代表标准的输入设备和输出设备。它们在文件iostream声明。,13,键盘输入,在C+中输入操作可理解为从输入流对象中提取数据,故称为提取操作。键盘输入是标准输入,其一般形式可表示为: cin变量1变量2
7、变量n; 其中,cin是预定义的标准输入流对象,是输入操作符,也称提取运算符。,14,屏幕输出,在C+中输出操作可理解为将数据插入到输出流对象中,故称为插入操作。屏幕输出是标准输出操作,用来将表达式的结果输出到显示器的屏幕上。其一般形式可表示为: cout表达式1表达式2表达式n; 其中,cout是预定义的标准输出流对象,是输出操作符,也称插入运算符。用它可以输出各种不同类型的数据。在输出时若要换行,可使用控制符endl。,15,常用的格式控制符,endl 换行并刷新输出流 setw(n) 设置字段位数为n hex,oct,dec 十六进制,八进制,十进制表示 setfill 定义填充字符 s
8、etprecision 定义浮点数的精度 left,right 左对齐,右对齐 showpoint 强制显示小数点以及全部尾部0,16,用const定义常量,C语言中常用#define命令来定义符号常量 在预编译时进行字符置换,又称宏替换 C+通过给常量命名的方式定义常量: const= const int MaxLine =1000; 用const定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法 ,不能用赋值运算符对这种常量进行赋值。如: MaxLine =35;,17,用const定义常量,const常量与宏常量相比的优点: const常量有数据类型,而宏
9、常量没有数据类型 有些集成化的调试工具可以对const常量进行调试,但不能对宏常量进行调试,18,函数原型声明,在C语言中,如果函数调用的位置在函数定义之前,则应在函数调用之前对所调用的函数作声明。但如果所调用的函数是整型的,也可以不进行函数声明。 对于函数声明的形式,C语言建议采用函数原型声明。 在C+中,如果函数调用的位置在函数定义之前,则要求在函数调用之前必须对所调用的函数作函数原型声明。 函数声明的一般形式为 函数类型 函数名(参数表);,19,函数的重载,定义 在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型不同,这些同名的函数用来实现不同的功能。 重载函数的参数
10、个数或类型必须至少有其中之一不同。不允许重载的函数只有返回类型不同。,20,#include using namespace std; int add(int,int); double add(double,double); int main() coutadd(5, 10)endl; coutadd(5.0, 10.5)endl; return 0; int add(int x, int y) return x+y; double add(double a, double b) return a+b; ,输出结果:15 15.5,重载函数的参数个数或类型必须至少有其中之一不同。不允许重载的函
11、数只有返回类型不同。,21,函数模板,为什么引入函数模板?函数重载存在的问题 定义 实际上是一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可 在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能,22,函数模板,函数模板的定义,模板,关键字,类型参数,template T max(T a,T b) return(ab)? a:b; ,template 函数定义,23,函数模板,函数模板是对一组函数的描述,它以任意类型T为参数及函数返回值 函数模板不是一个实实在
12、在的函数,编译系统并不产生任何执行代码 当编译系统在程序中发现有与函数模板中相匹配的函数调用时,便生成一个重载函数,该重载函数的函数体与函数模板的函数体相同,int max(int a,int b) return(ab)? a:b; ,该重载函数称为模板函数,它是函数模板的一个具体实例,只处理一种唯一的数据类型。,24,函数模板,定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔: template ,template T1 max(T1 a,T2 b) return (ab) ? a : (T1)b; ,25,函数模板,函数模板比函数重
13、载更方便,程序更简洁 注意:函数模板只适用于函数的参数个数相同而类型不同,且函数体相同的情况。如果参数的个数不同,则不能用函数模板。,26,有默认参数的函数,一般情况下,在函数调用时形参从实参那里取得值,因此实参的个数应与形参相同 C+可以给形参一个默认值,这样形参就不必一定要从实参取值了 函数声明:float area(float a=6.5); (1) area();,area(6.5);,(2) area(7.5);,27,有默认参数的函数,如果有多个形参,可以指定任意个默认值 实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端 必须在函数调用之前将默认值的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础
链接地址:https://www.31doc.com/p-2576837.html