- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
程序设计(C++)构造函数与析构函数学习内容构造函数构造函数的定义构造函数的重载默认构造函数具有缺省参数的构造函数析构函数拷贝构造函数一个类的对象作为另一个类的数据成员利用初始化表对常量数据成员或引用成员提供初值类作用域构造函数构造函数(constructor)是与类名同名的特殊的成员函数构造函数的定义格式为:类名(形参说明){函数体}构造函数调用时间:当定义该类的对象时,构造函数将被自动调用构造函数的含义:实现对该对象的初始化构造一个具有意义的正确对象构造函数的例子例子:类person包括4个数据成员,用来记录人员信息。生成对象obj,并使用构造函数为obj赋予初始值#includeiostreamclassPerson//定义类{private://类Person的数据成员charname[10];//姓名intage;//年龄intsalary;//薪金chartel[20];//电话public://构造函数PersonPerson(char*xname,intxage,intxsalary,char*xtel);voiddisp();};#includeiostream#includePerson.husingnamespacestd;Person::Person(char*xname,intxage,intxsalary,char*xtel){strcpy(name,xname);//给各数据成员提供初值age=xage;salary=xsalary;strcpy(tel,xtel);}voidPerson::disp(){coutendl;cout姓名:nameendl;cout年龄:ageendl;cout工资:salaryendl;cout电话:telendlendl;}//主函数voidmain(){Personobj(张立三,25,850;//生成对象obj并初始化obj.disp();//显示obj}Personobj(“张立三”,25,850,);中完成了以下几个功能:定义并生成了对象obj。在生成对象obj的同时,自动调用相应类的构造函数Person将初始值“张立三”,25,850,传递给构造函数Person相应的形参xname,xage,xsalary,xtel。执行构造函数体,将相应的值赋给相应的数据成员。构造函数的特点函数名和类名相同无返回值由系统自动调用,不允许直接调用必须是公有(public)成员可以重载构造函数既可定义成有参函数,也可义成无参函数,要根据问题的需要来定。若没有定义构造函数,系统会定义一个默认的构造函数类名(){}但是若程序中提供了一个构造函数(不一定是无参构造函数),则系统不再提供默认的构造函数构造函数的重载类的成员函数的重载如果一个类中出现了两个以上的同名的成员函数时,称为类的成员函数的重载。当出现构造函数重载时,其匹配方式同普通函数重载时的匹配方式例子:在书记录类Record中定义两个重载函数,其中一个是无参函数,另一个是有参函数。它们都是构造函数。//定义类classRecord{private:charbookname[30];intnumber;public:Record();Record(char*a,intb);voidshow();};Rec::Rec(){strcpy(bookname,\0);number=0;}Rec::Rec(char*a,intb){strcpy(bookname,a);number=b;}voidRec::show()//show的函数定义{coutbooknameis:booknameendl;coutbooknumberis:numberendl;}
文档评论(0)