- 6
- 0
- 约3.14万字
- 约 92页
- 2017-04-04 发布于江苏
- 举报
chap5_类与对象2
第5讲 类与对象的更多内容 析构函数 复制构造函数 变量作用域 this指针 类对象作为成员 静态成员 友元 类模板 1 析构函数Destructor 对象的生存期结束时,在栈中为对象分配的内存空间将被释放,在释放之前会调用析构函数。 析构函数与构造函数相对。当创建一个对象时,其构造函数被调用,而对象的生命期结束时,析构函数被调用。 析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作。 析构函数名与构造函数相同,但必须在前面加上符号“~”,析构函数没有参数和返回值。一个类中只能定义一个析构函数,所以析构函数不能重载。 如果没有显式定义析构函数,那么编译器为每个类定义一个默认的析构函数。 析构函数举例:日期类Date //date.h class Date { public: Date(int y,int m,int d); ~Date( ); void printDate( ); private: int year,month,day; }; //date.cpp #include iostream.h #include date.h Date::Date(int y,int m,int d) { year=y; month=m; day=d; coutConstructor called.\n; } Date::~Date( ) { coutDestructor call.\n; } void Date::printDate( ) { coutyear/month/dayendl; } 析构函数例:Circle类 testCircle.cpp 注意 所有的类中都应包含构造函数和析构函数,且是由系统自动调用的。如果在类中没有给出定义,则系统会为其建立缺省构造/析构函数。 一般来讲,在创建对象时都要进行初始化,因此类中都要定义构造函数; 而析构函数的定义则可根据需要给出。当程序终止时,所有对象都会被销毁。但是如果对象的存储空间在栈stack中,则不能编写代码显式地销毁。只有动态创建于堆heap中的对象,才能用delete操作符显式地销毁。因此如果在构造函数中进行了动态内存资源的申请,则必须定义析构函数完成堆内存的释放. 析构函数应用:整型数组类CArray class CArray { public: CArray(int size); //创建包含size个数组元素的整型数组。 ~CArray(); //析构函数,删除动态申请的数组空间 int getAt(int nIndex); //得到下标为nIndex的数组元素的值 void setAt(int nIndex, int newElement); //将下标为nIndex的数组元素的值设置为newElement. private: int* data; //整型数组首地址 int size; //数组中的元素个数 }; array.cpp #includearray.h #includeiostream.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 #include array.h #include iostream.h void main() { CArray t(5); for(int i=0;i5;i++) t.setAt (i,i+1); for(i=0;i5;i++) coutt.getAt (i)endl; } 说明: 每一个类都有一个复制构造函数,若程序中没有自定义复制构造函数,则系统提供一个缺省的复制构造函数,该缺省复制构造函数可完成将一个对象的所有数据成员的值依次复制到另一个对象中的相应成员。 MyPoint类 #include iostream.h class MyPoint { private: int x,y; public: MyPoint(int xx=0,int yy=0) {x=xx;y=yy;} int getX(){return x;}; i
您可能关注的文档
- About the Newspaper.ppt
- Ability_Testing.ppt
- Accounting English (part7).ppt
- Accounting Thoery 04.ppt
- ADI in DBF Ultrasound block diagram.ppt
- ahead of the game课件.ppt
- Analysis Active Clamp Forward Converter.ppt
- Anna and the King.pptx
- Article635061493561486197.doc
- Article635574295001919322.doc
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 微机电系统MEMS简介课件.ppt VIP
- 大型活动交通需求预测和其交通组织管理方法研究.pdf VIP
- 苏州工业职业技术学院单招《数学》题库(精选题)附答案详解.docx VIP
- 共点力平衡的七大题型-Word版含解析.pdf VIP
- 人教版小学数学一年级口算比赛题库[全套].doc VIP
- 交通组织设计与优化.pptx VIP
- 2026年CNAS_认可评审员应知应会考点练习题及答案.docx VIP
- AP统计学 2012年真题 附答案和评分标准 AP Statistics 2012 Real Exam with Answers and Scoring Guidelines.pdf VIP
- 专题04 连接体模型(原卷版).docx VIP
- (完整版)mems简介课件.pptx VIP
原创力文档

文档评论(0)