C++第07章类与对象.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1. 可以声明指向常量的指针, 此时不能通过指针改变常量的值.但是指针本身可以改变,指向另外的对象。声明方式:const 类型 *指针变量名; 2. 可以声明指针类型的常量, 此时指针本身的值不能改变。声明方式:类型 *const 指针常量名; 3. 可以声明一个指向常量的常量指针。 声明方式: const 类型 *const 指针常量名; 有关指针的补充知识: 例: const a=100; int b=10,c=20; const int * p1=a;//p1是指向常量的指针 int *const p2=b; //p2是指针常量 *p1=20;//错误!不能通过p1改变所指的对象 p1=b;//正确! *p1=50;//错误!不能通过p1改变所指的对象 p2=c;//错误!P2是常量,其值不能改变 *p2=30;//正确! 类的应用举例 #includeiostream.h class Clock { ......//类的声明略 } //......类的实现略 void main(void) { Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime( ); } Clock类的完整程序见:p7_2.cpp 7.3 对象的初始化,构造函数与析构函数 对象也被称为类变量,一个类的对象是这个类的一个实例。和变量一样,对象也可以为其数据成员赋初值。不过对象的初始化情况比较复杂,可以有下列多种不同的方式,其中最重要的方式是构造函数。 1. 对公有数据成员的初始化 如果一个类的数据成员是公有的,那么其对象的初始化与一般变量、结构体变量或数组的初始化没有什么区别。 例如: 7.3.1 基本概念及定义 大多数类的数据成员是私有的或保护的,不能采用这种方式。 class address{ public: long telenum; char addr[30]; }; class person{ public: char name[15]; int age; address paddr; }; person p1={Zhang Hua,23,{2475096,NanKai University}}; ⒉ 利用公有的初始化函数进行初始化 在类中设置公有的初始化函数完成此项任务。如: public: void initpoint(){ X=0;Y=0;} ⒊ 利用构造函数进行初始化 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。 ⑴ 函数名与类名相同。 ⑵ 无函数(返回值)类型说明。 ⑶ 构造函数在一个新的对象被建立时,该对象所隶属的类的构造函数自动地被调用,对这个对象完成初始化工作。在程序中不能显式调用构造函数。 ⑷ 在上一条中提到的新对象的建立包括两种情况,①在对象说明语句中;②用new建立新的动态对象时。 ⑸ 如果一个类说明中没有给出构造函数成员,系统将自动给出一个缺省的(隐式的)构造函数,这个函数什么也不做。 (6)构造函数允许为内联函数、重载函数、带可缺省形参(形参有默认值)的函数。 构造函数具有下列特征: 例: 在class Point 中可定义构造函数: Point(void){ X=0.0; Y=0.0; } Point(float ix,float iy){ X=ix; Y=iy; } Point p(2.0,1.5), q; 注:若一个类定义了构造函数(可定义多个重载构造函数),则定义对象时,初始值表应与其中一个构造函数的参数表一致,以符合重载函数的调用规则。 4. 析构函数 完成对象被删除前的一些清理工作。 在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所占有的空间。 如果程序中未声明析构函数,编译器将自动产生一个缺省的不做任何事的析构函数。 析构函数名一律为~〈类名〉,如~Point()。 无函数返回类型。 无参数。 一个类只能有一个析构函数(即不能重载)。 7.3.2 构造函数与析构函数示例 建立一个类String,它具有一个显式的构造函数与一个显式的析构函数。在说明String的类对象时,系统将自动调用其构造函数。在main函数结束时(类对象生命期也将结束时),系统将自动调用其析构函数。 本例中,对象“诞生”时,在构造函数中通过new分配了动态空间(系统资源),对象“死亡”时,在析构函数中应通过delete来释放所申请到的动态空间。 程

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档