欢迎来到天天文库
浏览记录
ID:43531471
大小:240.50 KB
页数:32页
时间:2019-10-10
《第10章 构造函数和析构函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第10章构造函数和析构函数10.1构造函数作用:定义对象时,可以简单地给对象赋初值。10.1.1如何定义构造函数构造函数作为类中的函数出现。构造函数的名字就是类名。可以在函数定义中初始化对象。例:方法一:在类中定义构造函数格式:<类名>(参数){<函数体;>}方法二:在类外定义构造函数<类名>::<类名>(参数){<函数体;>}例10-1:定义构造函数#include“string.h”classperson{private:charName[8];ansignedAge:7;unsignedSex:1
2、;public:person(char*name,intage,charsex){strcopy(Name,name);Age=age;Sex=(sex==’m’?0:1);person(){};//函数重载{voidSetname(char*name){strcopy(Name,name);}voidSetage(intage){Age=age;}voidSetsex(charsex){Sex=(sex==’m’?0:1);}voidGetname(char*name)(strcpy(name,Nam
3、e);)intGetage(){retuenAge;};charGetset(){return(Sex==0?‘m’,’f’);};};例11-2使用构造函数完成数据的输入输出#include"iostream.h"classtime{public:time()//构造函数{hour=0;minute=0;sec=0;}voidset_time();//函数原型voidshow_time();//函数原型private:inthour;intminute;intsec;};voidtime::set_t
4、ime(){cin>>hour;cin>>minute;cin>>sec;}voidtime::show_time(){cout<5、me()函数,输出t1对象数据成员值。定义对象t2,同时自动执行构造函数,对类中的成员赋初值。执行t2.show_time()函数,输出t2对象数据成员值。问题:如果不给对象成员赋值(第2步不执行),输出结果是什么?如果没有构造函数,不给对象成员赋值,输出结果又是什么?构造函数如何定义?(类内和类外)time()//在类内进行函数声明time::time()//在类外定义{hour=0;minute=0;sec=0;}4.构造函数如何使用?5.构造函数的名字是什么?6.什么时间调用构造函数?7.构造函数6、有没有返回值?8.用户不定义构造函数,C++系统会自动生成一个构造函数,该函数是否有内容?9.带参数的构造函数和不带参数的构造函数使用上有什么不同?10.函数重载和构造函数重载的各自作用和不同地方是什么?11.构造函数中的初始值是否一定为0?12.为什么要定义重载构造函数?(定义构造函数之后,不允许使用系统默认构造函数,若要使用必须从新显示说明)10.1.2构造函数与对象初始化格式:对象(实参);或对象;例10-3:利用构造函数对对象初始化且输出#include"iostream.h"classdemo7、{intx,y;public:demo(inta,intb)//建立构造函数{x=a;y=b;}demo()//构造函数重载{x=10;y=20;}voidprint(){cout<<"x="<8、数和new运算符new是用来创建动态变量,还可以动态创建对象。例:以下例子是创建对象,其对象是由指针表示#include“102.h”.voidmain(){demo*p1=newDemo(3,5);//定义动态对象指针且对象初始化p1->print();demo*p2=newDemo();p2->print();deletep1;//释放或撤消动态对象deletep2;}说明:定义动态对象可以使用另一种方法:demo*p1;p1=newd
5、me()函数,输出t1对象数据成员值。定义对象t2,同时自动执行构造函数,对类中的成员赋初值。执行t2.show_time()函数,输出t2对象数据成员值。问题:如果不给对象成员赋值(第2步不执行),输出结果是什么?如果没有构造函数,不给对象成员赋值,输出结果又是什么?构造函数如何定义?(类内和类外)time()//在类内进行函数声明time::time()//在类外定义{hour=0;minute=0;sec=0;}4.构造函数如何使用?5.构造函数的名字是什么?6.什么时间调用构造函数?7.构造函数
6、有没有返回值?8.用户不定义构造函数,C++系统会自动生成一个构造函数,该函数是否有内容?9.带参数的构造函数和不带参数的构造函数使用上有什么不同?10.函数重载和构造函数重载的各自作用和不同地方是什么?11.构造函数中的初始值是否一定为0?12.为什么要定义重载构造函数?(定义构造函数之后,不允许使用系统默认构造函数,若要使用必须从新显示说明)10.1.2构造函数与对象初始化格式:对象(实参);或对象;例10-3:利用构造函数对对象初始化且输出#include"iostream.h"classdemo
7、{intx,y;public:demo(inta,intb)//建立构造函数{x=a;y=b;}demo()//构造函数重载{x=10;y=20;}voidprint(){cout<<"x="<8、数和new运算符new是用来创建动态变量,还可以动态创建对象。例:以下例子是创建对象,其对象是由指针表示#include“102.h”.voidmain(){demo*p1=newDemo(3,5);//定义动态对象指针且对象初始化p1->print();demo*p2=newDemo();p2->print();deletep1;//释放或撤消动态对象deletep2;}说明:定义动态对象可以使用另一种方法:demo*p1;p1=newd
8、数和new运算符new是用来创建动态变量,还可以动态创建对象。例:以下例子是创建对象,其对象是由指针表示#include“102.h”.voidmain(){demo*p1=newDemo(3,5);//定义动态对象指针且对象初始化p1->print();demo*p2=newDemo();p2->print();deletep1;//释放或撤消动态对象deletep2;}说明:定义动态对象可以使用另一种方法:demo*p1;p1=newd
此文档下载收益归作者所有