预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

本章主要内容类的声明(即类的定义)定义对象面向对象程序设计:被结构化的结构化程序设计; 对象:一组数据及相关代码的结合体; 数据:描述对象的属性; 代码:对数据进行处理的操作; 封装:隐藏大部分细节(数据、代码); 接口:对外开放一部分属性和操作; 类:同类型对象的抽象描述,面向对象方法的 核心; 聚合:由简单对象组合而成的复杂对象; 消息:对类的成员函数的调用,是对象之间彼此联系、共同协作的媒介。1.1面向对象程序设计的特点1.抽象性:抽取本质特性(共性),加以简单描述2.封装性:内部细节对外隐藏,通过接口进行控制3.继承性:复用共性,简化描述多态性:一个接口,多种方式2类和对象 类的成员函数用于对数据成员进行处理,又称为“方法”,程序中通过类的成员函数来访问其内部的数据成员。一般类中成员函数的原型声明写在类定义体内,用以说明该成员函数的形式参数和返回值类型,而成员函数的定义体一般写在类定义之外。通常采用下面的形式定义成员函数: <类型标识符><类名>::<成员函数名>(<形参表>) { <函数体> }例如: classrectangle {private: intx,y,weight,high; public: rectangle(intxx,intyy,intw,inth) {x=xx;y=yy;weight=w;high=h;} inlineintarea(); }; inlineintrectangle::area() { returnweight*high; } 类和对象的关系相当于普通数据类型与其变量的关系。 声明一个类:定义了一种新的数据类型; 对象说明:创建这种数据类型的物理实体。 由同一个类创建的各个对象具有完全相同的数据结构,但它们的数据值在使用过程中可能各不相同。 一旦创建了一个类的对象,程序就可以用圆点运算符“.”来引用类的公有成员,其一般形式为 <对象名>.<公有数据成员名> 或<对象名>.<公有成员函数名(实参表)> 例如,用前面定义的rectangle类声明一个rectangle的对象r1,通过对象r1完成对成员函数 area()的调用: rectangler1(10,10,20,20); r1.area(); 注意:只有用public定义的公有成员才能使用圆点操作符访问,对象中的私有成员是类中隐藏的数据,不允许在类外的程序中被直接访问,只能通过该类的公有成员函数来访问它们。构造函数:在类中声明的一种特殊的成员函数; 作用:将对象初始化为一个特定的状态。 构造函数的名字与它所属的类名相同,被声明为公有函数,没有返回值,在创建对象时被自动调用。 构造函数可以访问类的所有数据成员,可以是内联函数,可以带有参数表,可以带默认的形参值。构造函数也可以重载,以提供初始化类对象的不同方法。 例如,前面定义的rectangle类的构造函数为 rectangle(intxx,intyy,intw,inth) {x=xx;y=yy;weight=w;high=h;} 每个类都必须有构造函数,若类定义时没有定义任何构造函数,编译器会自动生成一个不带参数的缺省构造函数,其形式如下: <类名>::<缺省构造函数名>() { //…… }定义拷贝构造函数的一般形式为: classclass_name { private: public: class_name(形式参数表) //构造函数 {函数体} class_name(class_name&ob_name)//拷贝构造函数 {函数体} } 拷贝构造函数调用场合: 1.用类的一个对象去初始化该类的另一个对象; 2.函数的形参是类的对象; 3.函数的返回值是类的对象。作用:对象失效时,进行系统放弃对象内存之前的清 理工作,使内存可用来保存新的数据。析构 函数本身并不实际删除对象。 例:~rectangle() {函数体}//ex4_1.cpp: 演示构造函数、拷贝构造函数和析构函数 #include<iostream.h> classpoint { private: intx,y; public: point(intxx=0,intyy=0) //定义构造函数 { x=xx; y=yy; cout<<"构造函数被调用"<<endl; } point(point&p); //声明拷贝构造函数 ~point() //定义析构函数 {cout<<"析构函数被调用"<<endl} intgetx(){returnx;} intgety(){returny;} };point::point(point&p) //定义拷贝构造函数 { x=p.