cppCH3构造函数与析构函数.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文档。上传文档
查看更多
cppCH3构造函数与析构函数.ppt

cppCH3构造函数与析构函数 自考 3.0 初始化、赋值的概念 1、初始化 声明标识符(变量、对象、引用名)的同时给初值成为初始化。 初始化的一般格式: 数据类型 标识符=初始值 或 数据类型 标识符(初始值) 例如: int i=0;或 int i(0); Location A(0,0); 3.0 初始化、赋值的概念 2、赋值 在执行语句中,使用”=”表示赋值。 赋值的一般形式: 左值=右值 例如: 3.1 构造函数1 在C++语言中,可以使用初始化列表给没有定义构造函数的类的对象进行初始化。 例如: 有构造函数时,使用初始化列表则错 当数据成员的访问控制权限为私有时,使用初始化列表错 1、定义构造函数 1、构造函数的特点: (1)构造函数是和类名同名的成员函数; (2)定义构造函数时不能指定返回值类型; (3)当声明对象时,构造函数被系统自动调用来初始化对象。 #includeiostream.h class Location{ private: int X,Y; public: Location(){X=Y=0;} Location(int x,int y){X=x;Y=y;} int GetX(){return X;} int GetY(){return Y;} }; void main(){ Location A1(6,8); coutA1.GetX(),A1.GetY()endl; } 3.1构造函数2 2、对象的创建 普通对象的创建(举例理解) 对象数组的创建(举例理解1、举例理解2 ) 3、外部对象的引用性说明(举例理解) 4、全局对象的创建(举例理解) 5、动态内存分配 动态对象的创建 动态对象数组的创建 对象数组的创建1 对象数组元素的创建过程:0-1-… 对象数组的创建2 当初始化的对象具有两个及以上参数时的形式 3、外部对象的引用性说明 全局对象或静态对象,在main函数执行之前要调用所属类的构造函数来调用 4、全局对象的创建 见“外部对象的引用性说明”的例子。 5、动态内存分配 (1)动态对象的创建 使用运算符new创建生存期可控的对象,new操作返回这个对象的地址。 举例:讲解创建过程 使用new操作建立的动态对象在不用时必须使用delete删除,以便释放所占空间。 new创建对象时,自动调用构造函数来初始化申请的内存空间; delete释放所占空间时,自动调用析构函数。 5、动态内存分配 (2)动态对象数组的创建 new操作为每个对象元素申请内存空间,然后自动调用构造函数来依次初始化这块内存,最后new操作返回这个对象数组的首地址。 举例:讲解创建过程 使用new操作建立的动态对象在不用时必须使用delete删除,以便释放所占空间。 new创建对象数组时,自动调用构造函数来依次初始化申请的内存空间; delete操作时,自动调用析构函数来依次释放对象数组元素所占空间。 3.1.3 缺省构造函数 1、缺省构造函数 不带参数的构造函数称作缺省构造函数。 例如: Test ::Test(){coutInitializing defaultendl;} 2、编译器生成缺省构造函数 如果程序员没有为声明的类义任何构造函数,则编译器自动生成缺省构造函数 如果程序员已经为类定义任何构造函数,则编译器不再自动生成缺省构造函数 编译器生成缺省构造函数举例: Test(){ } 3、若没有为类定义缺省构造函数时,则在说明对象(对象数组)时必须提供初始值。 4、当声明对象时,一定要保证对象能够被恰当的构造函数所创建。 3.1.4 复制初始化构造函数 赋制初始化构造函数:又称作拷贝构造函数。 拷贝构造函数的一般语法形式: 在拷贝构造函数中通过对象引用访问私有成员是允许的。 拷贝构造函数会在如下三种情况下被调用: (1)当用一个类的对象去初始化另一个对象时; (2)如果函数的形参是类的对象,调用函数时,进行形参和实参结合时; (3)如果函数的返回值是类的对象,函数执行完成返回调用者时 (1/3)当用类的一个对象去初始化该类的另一个对象时系统自动调用它实现拷贝赋值。 (2/3)若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数 例如: void fun1(Point p) { coutp.GetX( )endl; } void main( ) { Point A(1,2); fun1(A); //调用拷贝构造函数 } (3/3)当函数的返回值是类对象时,系统自动调用拷贝构造函数 例如: Point fun2( ) { Point A(1,2); return A; //调用拷贝构造函数 } void main

文档评论(0)

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

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

1亿VIP精品文档

相关文档