




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
程序设计是计算机学科的§5.1类的引入§5.1类的引入§5.1类的引入§5.1类的引入§5.1类的引入§5.1类的引入§5.2类的定义§5.2类的定义§5.2类的定义§5.2类的定义§5.2类的定义§5.2类的定义§5.2类的定义§5.2类的定义§5.2类的定义§5.3对象的创建§5.3对象的创建§5.3对象的创建§5.3对象的创建§5.3对象的创建§5.3对象的创建§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.4对象的初始化§5.5使用类与对象构造程序的实例§5.5使用类与对象构造程序的实例§5.5使用类与对象构造程序的实例§5.5使用类与对象构造程序的实例§5.5使用类与对象构造程序的实例§5.5使用类与对象构造程序的实例§5.5使用类与对象构造程序的实例§5.5使用类与对象构造程序的实例§5.6指向对象的指针5.6.1对象指针 this指针 C++为每个对象提供一个指针this,记录该对象的地址,当通过对象来调用类的成员函数时,this作为一个隐式参数传递给成员函数 this的性质 隐式指针,不能显式声明 常指针,不能被修改,当一个类对象被创建时,this就被初始化为指向该对象的指针 this是一个局部变量,局部于某个对象,在该类的任何非静态成员函数中可见。例2: intC::get_value() { returnvalue; returnthis->value; }5.6.2对象的动态创建与撤销 运算符new提供了动态存储分配的功能 一般形式:指针名=new基类型名(初始化表); 若基类型是类类型,则()内为该类的构造函数提供实参。 功能:动态分配一块内存,其大小由基类型决定,若分配成功,则返回该内存的首地址给指针,否则返回NULL5.6.2对象的动态创建与撤销 例1: int*p; p=newint; *p=10; cout<<*p; 例2:动态分配数组 int*p1; intlen; cin>>len; p1=newint[len];5.6.2对象的动态创建与撤销 例3:分配类对象 CIRCULAR_NUMBERS*angle_ptr; … angle_ptr=newCIRCULAR_NUMBERS(0,359,250); if(angle_ptr==NULL){//内存分配失败后的处理 … } else{//内存分配成功后的处理 … } …5.6.2对象的动态创建与撤销 运算符delete用于释放用new分配的存储空间 一般形式: delete指针名; 例: deletep; delete[]p1; //数组释放时,加[]则会释放整个分配的区域,否则只会释放一个基类型占用的空间; deleteangel_ptr; 用new分配的内存空间,一定要用delete释放,而且只能释放一次。否则将产生“内存垃圾”5.6.3对象的复制与比较 对象的复制与比较是针对对象的数据成员而言的。 ClassStudent{ public: Student(constchar*str) {strcpy(name,str); … } ~Student() {…} private: charname[30];//name以数组形式出现 } Students1,s2; … s1=s2;//C++语言提供的缺省情况,s2数据成员逐位复制给s15.6.3对象的复制与比较 ClassStudent{ public: Student(constchar*str) {name=newchar[strlen(str)+1]; strcpy(name,str); … } ~Student() {deletename;…} private: char*name;//name以指针形式出现 } Students1,s2; … s1=s2;//s2中name指针的值复制给s1中的name 设计一个专门的复制函数Sudent*copy(Student*obj1,Student*obj2);§5.7关于类与对象的进一步讨论§5.6关于类与对象的进一步讨论§5.7关于类与对象的进一步讨论习题

ys****39
实名认证
内容提供者


最近下载