1、C+程序语言设计,C+语言核心子集,一、面向对象的程序设计,对象构成了程序对象表达真实生活中的某个概念每一个对象都有一套定义明确的能力关键特性抽象性(Abstraction)封装性(Encapsulation)层次性(Hierarchy)多态性(Polymorphism),抽象性,为对象创建一个定义明确的接口将实现与接口分开一个优点是对操作数据的代码局部化,如果需要改变处理数据的方法,只需要在一个地方进行修改。,封装性,保持抽象机制实现细节的专有性鼓励且强迫隐藏实现细节使代码更可靠,而且更容易维护,层次性,创建强大的抽象机制的层次一种层次化方法是组合,可以将较小的对象组合成较大的对象另一种层次
2、化方法是继承,不仅允许一个抽象重用已实现的代码,还可以多次重用与另一个抽象的接口,多态性,如果代码在被不同类型的实例使用时是透明的,那么就说它具有多态性,类,C+在C中添加了类来支持面向对象程序设计方法类就像C的结构体描述了对象的形式和行为称类为用户定义类型,二、不含类的C+,新型的注释“/”新的 I/O库“iostream”函数声明说明函数接口而不是函数主体,在C+中,一个函数被调用前一定要被声明(或被真正定义)对空参数和没有限制的参数声明,二、不含类的C+,C+允许多个函数使用相同的名字,只要它们的特征不同即可,函数的特征是函数名加参数的数量和类型。(重载)void*通用指针,C+允许隐式
3、的将一个指针转换为void*型指针,要求显示的将void*型指针转换为其他类型的指针有关指针的上下文中出现的0代表空指针,三、成员函数产生的抽象性,抽象性指的是为对象创建定义明确的接口数据成员、成员函数,统称为类成员成员函数的声明、定义和调用作用域运算符:this指针指向调用成员函数的对象重载成员函数,四、存取说明符产生的封装性,确保实现细节的秘密性类通过存取控制被封装起来存取说明符类成员可以具有任何存取级别存取说明符的顺序和数量没有限制私有并非意味着不可见友元函数与友元类友谊并不具有传递性,五、组合与继承产生的层次性,将其他对象作为类成员来创建对象成为组合继承不仅允许一个类使用另一个类的实现
4、,还可以共享那个类的接口一个类可以是任意多个类的基类派生类也可以作为再继承的类的基类一个类可以具有多个基类派生类不能访问基类的私有成员友元关系经过派生之后就不存在了,五、组合与继承产生的层次性,成员函数的重载成员函数的覆盖,六、构造函数和析构函数产生的更好的抽象性,构造函数析构函数缺省的构造函数和析构函数,六、构造函数和析构函数产生的更好的抽象性,一个对象的生存期分配内存调用类成员对象的构造函数执行自身的构造函数,初始化内建类型的实例成员使用对象执行自身的析构函数,释放指针成员所指向的内存调用类成员对象的析构函数释放内存,六、构造函数和析构函数产生的更好的抽象性,不同类型对象构造函数和析构函数
5、的调用时机:自动局部型:作用域内,进入构造,退出析构静态局部型:声明处构造一次,程序结束析构全局型:main()之前创建,程序结束析构,七、new和delete产生的更好的抽象性,new和delete创建和销毁动态对象new和delete创建和销毁动态对象数组内存溢出时的处理异常,八、引用,形式参数与实际参数引用和指针特殊的指针声明引用的&和声明指针的*具有相同的语法和优先级向上类型转换在C+中传递引用在C+中返回引用,九、由其他函数产生的更好的抽象性,赋值运算符(运算符重载)缺省的赋值运算符重载拷贝构造函数成员初始化列表缺省的拷贝构造函数禁止赋值和拷贝构造,十、模版产生更好的层次性,类模版是
6、一个部分被限定了的类的定义使用模版来定义一个对象从另外一个角度来产生层次性算法的抽象 vs. 数据的抽象,十一、虚函数参数的多态性,基于对象(抽象、封装、层次)面向对象(抽象、封装、层次、多态)多态性允许用相同的代码来使用不同的对象虚函数:使对象的行为基于它运行时刻的类型,也被称为多态函数通过在成员函数名前加上virtual关键字来声明虚函数使用基类的指针和引用来支持多态性,十一、虚函数参数的多态性,纯虚函数抽象基类多态类需要虚的析构函数纯虚析构函数,后记,参考书目: C+语言核心OREILLY 中国电力出版社,Gregory Satri & Doug Brown著,张铭泽译,2001.01通过本次课程学习,如果能激发同学们的学习兴趣,启发同学们找到适合自己的学习方法,就算成功!,感谢大家本学期的付出与支持!,“路曼曼其修远兮,吾将上下而求索;”屈原 离骚,