C++基础2.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基础2

例:考虑点和圆的关系。 圆的属性包括圆心和半径,而圆心就是一个点。 class Point { int x, y; public: Point(int x1,int y1) { x=x1; y=y1 ; } void setxy(…); …}; class Circle { float r; Point circle_point; public: Circle(float r1, int a, int b) :circle_point(a,b) {r=r1;} void set_point(…) { circle_point.setxy(…); } … }; void main( ) {Circle cobj(5.6, 1, 2); cobj. set_point(…);…} 3 、临时对象 当函数的返回类型为类类型时,将调用拷贝构造函数将返回的对象保存到那个临时对象中。 另外,在类对象的运算中,也可能会产生临时对象。 临时对象也可以由显示构造函数的调用来创建。 4、指向对象的指针 在C++中,可以直接使用对象,也可通过指向对象的指针变量来使用对象。 说明指向对象的指针变量的语法与说明指向其他任何数据类型的指针变量的语法相同。 可以通过:指向对象的指针变量-类的公有成员 的方式在类外访问一个类的成员。 拷贝构造函数 如果一个类没有显式定义拷贝构造函数,C++编译器可以为该类产生一个缺省的拷贝构造函数。 缺省的拷贝构造函数,也将复制对象的各个数据成员复制给被复制对象的各个数据成员。 这样一来,两个对象的内存映像是一模一样的。 * 拷贝构造函数的用途: 创建一个新对象,并将一个已存在的对象复制到这个新对象 对象本身做参数(将实参对象复制给形参对象) 函数返回对象(复制返回的对象给一个临时对象) class A { int x;int y; public: A(int, int); //一般构造函数 A(const A objA) // 拷贝构造函数 { x=objA.x; y=objA.y;} }; * void main( ) { A obj1(10,20); //调用A(int,int) A obj2(obj1); //调用A(const A ); A obj3 = obj2; //调用A(const A ); } class student{ private: char *name; float score; public: student(char *na, float sc); ~student(); }; student::student(char *na,float sc){ name=new char[strlen(na)+1]; if(name!=NULL) { strcpy(name, na); score=sc; } } student::~student( ) { cout析构函数运行,学生name占用的内存释放!endl; delete name; } void main(void) { student s1(“Tom, 83.5); student s2(s1); } * 使用缺省的拷贝构造函数 * student::student(const student w) { name=new char[strlen(w.name)+1] ; if(name!=NULL) { strcpy(name, w.name); score = w.score; } } * 类的对象 可以创建不同形式的类对象: 命名的自动对象: 每次进入该对象的作用域,都调用构造函数; 每次退出该对象的作用域,都调用析构函数。 自由对象(动态对象) 使用new创建对象(实际上调用构造函数); 使用delete释放对象(实际上调用析构函数); 当delete释放对象后,该对象就不能再被使用。 如果构造函数有参数,也必须给出实参。 * class Table {…}; void f(int a) { Table aa; //aa的生命期到f函数返回 Table bb; //bb的生命期到f函数返回 if (a0) { Table cc; //cc的生命期到if语句结束 … } Table dd

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档