C++程序设计教程.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文档。上传文档
查看更多
C程序设计教程

C++程序设计教程(第二版) 第九章 对象生灭 第九章内容 1. 构造函数设计 2. 构造函数重载 只要一个类定义了一个构造函数(不一定是无参构造函数), C++编译系统就不再提供默认的构造函数。任何其他的构 造函数定义,都将阻止默认无参空函数的产生: class Date{ public: Date(int y, int m, int d){} // ... }; int main(){ Date d; // error // ... } 3. 类成员初始化 class StudentID{ int value; public: StudentID(){ static int nextStudentID = 0; value = ++nextStudentID; coutAssigning student id value\n; } };//----------------------------------- class Student{ string name; StudentID id; public: Student(string n = noName){ cout Constructing student + n + \n; name = n; } };//----------------------------------- int main(){ Student s(Randy); }//============================== 4. 构造顺序 全局数据区: 全局对象,静态全局对象,静态局部对象,常对象类的静态数 据成员也存放在该数据区。目的是为了让对象的生命周期与 运行的程序等寿命。 栈区: 局部对象 在函数中定义好、局部对象,随着被调用的返回而析构(销毁)。 动态存储区(也称堆区): 用new申请的对象 用delete销毁。 特殊地址空间 除此之外,还可以指定特殊地址空间,存放对象 5. 拷贝构造函数 6. 析构函数 7. 对象转型与赋值 对象赋值即对象拷贝:两个已经存在的对象之 间的复制  Person d(“Ranny”) Person g;  d = g; // 对象赋值 对象赋值便是使用类中的赋值操作符. 如果类中没有定义赋值操作符,则系统悄悄地定义一个默认的赋值操作符: Person operator=(const Person p){ memcpy(*this, *p, sizeof(p)); } 当对象本体与对象实体不同时,则对象赋值操作符与拷贝构造函数一样,必须自定义: class Person{ char* pName; public: Person(char* pN=noName); Person(const Person s); Person operator=(const Person s){ if(this==s) return s; delete[] pName; pName = new char[strlen(s.pName)+1]; if(pName) strcpy(pName,s.pName); return *this; } ~Person(){ delete[] pName; } }; 8. this指针 成员对象的构造顺序按类定义的出现顺序 成员对象 class A{ public: A(int x){ coutA:x-; } };//----------------------------------- class B{ public: B(int x){ coutB:x-; } };//----------------------------------- class C{ A a; B b; public: C(int x,int y):b(x),a(y){ coutC\n; } };//----------------------------------- int main(){ C c(15, 9); }//============================ class C按A、B的顺序定义对象成员,其构造函数又按b、a的顺序进行构造。到底听谁的,以定义顺序说了算。 网羊丧雇或答擂谎毫训音着畦溉脐虎咨札糕未佑诧膛豺吃苫尺竹杖或秧孕C++程序设计教程C++程序设计教程 构造位置 签饮徒恢芹娇携瞬搪健丁站忙膘栗卡戎痕莫搓害颂捷彪酞锻脉咀对箩合夺C++程序设计教程C++程序设计教程

文档评论(0)

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

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

1亿VIP精品文档

相关文档