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

Visual C++程序设计 第10章 构造函数与析构函数 构造函数 析构函数 构造函数的其它特点 * * 成贤学院VC++课程05级 copyright: 柏毅 版本号:V2005.08-06.01 在C++中,对象的数据成员的初始化可以有三种方法: 使用初始化数据列表的方法;(参见书P218 例10.1) 通过构造函数; 通过对象的拷贝初始化函数; 构造函数: 是在类体中说明的一种特殊的成员函数,其功能是在创建类的对象时,使用给定的值将对象初始化。 在定义一个类时,可以根据需要定义一个或多个构造函数(重载构造函数)。构造函数与类的成员函数一样,可以在类中定义,也可以在类外定义。 第一讲 构造函数 10.1 构造函数及对象的初始化 一般格式为: ClassName(形参表) {……} 或者: ClassName::ClassName(形参表) {……} 例10.1 使用构造函数对新产生的对象初始化 #includeiostream.h class C{ int i; public: char *name; protected: float num[2]; public: C(int a, char *s, float x, float y) { i=a; name=s; num[0]=x; num[1]=y; } void Print(void) { couti\tname\t; coutnum[0]\tnum[1]\n; } }; void main(void) { C c1(25,name,77.8f,99.56f); c1.Print( ); } 运行结果: 25 Name 77.8 99.56 对构造函数的几点说明: 构造函数的函数名必须与类名相同。系统在生成类的对象时自动调用类的构造函数,完成初始化对象的成员数据工作。 构造函数的定义不能指定函数的返回值类型,也不能指定为void类型。 构造函数可以不带参数,也可以带若干个参数或指定参数的缺省值,构造函数允许重载。 若定义的类要用来说明类的对象时,构造函数必须是公有的成员函数。如果定义的类仅用于派生其他类时,则可将构造函数定义为保护的成员函数。 10.1.2 构造函数和对象的初始化 例10.4 (P220) //例10.5 产生全局对象、静态对象和局部对象 #includeiostream.h class Rectangle{ int Left, Right, Top, Bottom; public: Rectangle(int L, int R, int T, int B) { Left =L; Right=R; Top=T; Bottom=B; cout调用带参数的构造函数(全局)!\n; } Rectangle(int L, int R, int T) { Left =L; Right=R; Top=T; Bottom=0; cout调用带参数的构造函数(静态)!\n; } Rectangle(int L, int R) { Left =L; Right=R; Top=0; Bottom=0; cout调用带参数的构造函数(局部)!\n; } Rectangle( ) { Left=0;Right=0; Top=0;Bottom=0; cout调用不带参数的构造函数!\n; } void Print(void) { coutLeft\tRight\tTop\tBottom\n; } }; Rectangle r4(200,300,400,500); //全局对象,在进入main( )之前调用 void f1(void) { cout进入函数f1()\n; static Rectangle r5(200,200,500); //静态对象r5只在首次调用函数f1并产生该对象时调用构造函数; r5.Print( ); Rectangle r6(100,100); //局部对象r6,每次调用f1时都要调用构造函数。 r6.Print( ); } void main(void) { cout进入主函数main()\n; r4.Print(); f1( ); Rectangle r1(100,200); r1.Print( ); Rectangle r2; r2.Print( ); f1( ); } 说明:在函数f1中,B行中定义的静态对象r5是在首次调用函数f1并产生该对象时调用构造函数的,

文档评论(0)

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

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

1亿VIP精品文档

相关文档