- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C构造与析构函数
第4讲 构造函数与析构函数;1 构造函数constructor(对象的初始化);1-1 构造函数Constructor;(2) 自定义构造函数;Date:: Date(int y=1900,int m=1,int d=1)
//默认参数
{
year = y;
month = m;
day = d;
};构造函数的说明;1-2 因为创建对象时系统要调用构造函数,则必须根据构造函数形式创建对象(创建对象时为构造函数提供实参);Circle类定义无参构造函数_单文件;Circle类定义无参构造函数_多文件;⑵ 使用带参数构造函数创建对象(必须为构造函数提供实参);Circle类定义有参构造函数_多文件;⑶ 重载构造函数;Circle类定义重载构造函数_多文件;⑷ 使用带默认参数的构造函数;#include circle.h
#includeiostream.h
void main()
{
Circle cir1,cir2(2);
coutcir1.getRadius ()endl;
coutcir1.getArea()endl;
coutcir2.getRadius ()endl;
coutcir2.getArea()endl;
}; 注意:若在类中同时定义了带默认参数的构造函数与无参构造函数,要注意避免出现歧义性(二义性)而产生编译错误。;构造函数的另一种写法:构造函数初始化列表
构造函数主要用来对类的数据成员进行初始化,即将构造函数的参数值传送给数据成员,可将构造函数定义为 :
:数据成员名(参数名)
Circle::Circle(double r): radius(r)
{…}
Date::Date(int y, int m, int d):year(y),month(m),day(d)
{ … }
函数体中可以有语句,进行其它的初始化操作;若类中没有定义任何形式的构造函数,系统自动生成默认的无参构造函数。
若类中定义了构造函数,则编译器就不会再提供默认的无参构造函数,必须使用自定义的构造函数创建对象,否则出现语法错误。
若要使用多种形式的构造函数创建对象,则必须:
重载构造函数,即在类定义中增加无参和有参构造函数的定义。
定义带默认参数的构造函数。
构造函数与set函数; 2 析构函数Destructor;#include circle.h
#includeiostream.h
void main()
{
Circle cir1,cir2(2);
};析构函数举例:日期类CDate;注意;析构函数应用:整型数组类CArray;#includearray.h
CArray::CArray(int s)
{
size=s;
data=new int[size];
}
CArray::~CArray()
{
delete []data;
}
int CArray::getAt(int nIndex)
{
return data[nIndex];
}
void CArray::setAt(int nIndex, int newElement)
{
data[nIndex]=newElement;
};testArray.cpp;复制构造函数是特殊的构造函数,具有一般构造函数的特性(在创建新对象时才被调用)。
函数名同类名,且只有一个形参,该形参是本类对象的引用,从而用一个已经存在的对象(由复制构造函数的参数指定的对象),去初始化另一个正创建的同类的对象。;创建对象时,要么调用构造函数,要么调用复制构造函数;//point.h
class CPoint
{
private:
int x,y;
public:
CPoint(int xx=0,int yy=0);
CPoint(CPoint p);
int getX();
int getY();
};;3-2 复制构造函数在以下三种情况下被调用(从无到有):
1) 用一个已存在的对象去初始化正创建的该类的另一个对象时。;3) 如果函数的返回值是类的对象,函数执行完成返回调用者时。;创建对象时,要么调用构造函数,要么调用复制构造函数。复制构造函数用一个已经存在的对象(由复制构造函数的参数指定的对象),去初始化另一个正创建的同类的对象。将已有对象的数据成员的值复制给正在创建的另一个同类的对象,以实现同类对象之间数据成员的数据传递。 (本类对象的复制)
每个类都有构造函数、析构函数和复制构造函数,如果定义类时没有给出它们的定义,则系统自动为类提供默认的。系统自动提供的默认构造函数和析构函数为空函数,什么都不做,而默认的复制
您可能关注的文档
- 9.1压强(新人教版).ppt
- 9.1压强2.ppt
- 9.1混联电路的计算.ppt
- 9.1第2课时 压强的综合运用.ppt
- 9.1磁场的描述 磁场对电流的作用.ppt
- 9.1第三章 微生物的营养17.ppt
- 9.2《二次根式的加减法》课件PPTPPT.ppt
- 9.2微正则分布.ppt
- 9.2《液体的压强》参考课件(共计23张PPT).ppt
- 9.2微波段电子自旋共振.docx
- 山东省高唐蓝山集团总公司校园招聘模拟试题附带答案详解学生专用.docx
- 山东省高唐蓝山集团总公司校园招聘模拟试题附带答案详解参考答案.docx
- 山东省高速公路集团有限公司校园招聘模拟试题附带答案详解一套.docx
- 2024年至2025年黑龙江省大庆市公开招聘警务辅助人员辅警结构化面试高频必考题库一卷含答案.docx
- 2024年至2025年山东省济南市公开招聘警务辅助人员辅警结构化面试能力提升题库一含答案.docx
- 山东省高唐蓝山集团总公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版汇编.docx
- 2024年至2025年云南省玉溪市公开招聘警务辅助人员辅警结构化面试模拟练习题库二含答案.docx
- 2020年至2021年广东省东莞市公开招聘警务辅助人员辅警结构化面试历年模拟题库二含答案.docx
- 山东省高唐蓝山集团总公司校园招聘模拟试题附带答案详解必威体育精装版.docx
- 2024届高考新课标I卷作文“人工智能时代的问题是否越来越少”导写+.pdf
最近下载
- 急诊与灾难医学-第二十二章 人为灾难的医学救援.pptx
- 030904《项目实施进度里程碑确认单》.xlsx VIP
- 治疗篇第六章骨伤科四肢病证推拿讲解.ppt
- 2025年广西机场管理集团有限责任公司人员招聘笔试备考题库及答案解析.docx
- 七年级下册英语课件Unit 3《Keep Fit》(Section A 1a-1d).pptx VIP
- 福特嘉年华说明书.pdf
- 医院医疗设备管理员及使用人员岗位职责.pptx VIP
- 江苏省小学科学实验知识竞赛题库附答案.pdf VIP
- 教科版(2017秋)四年级下册科学期末复习训练题(含答案).docx VIP
- 八年级下数学期中测试题(a卷).pdf VIP
文档评论(0)