网站大量收购独家精品文档,联系QQ:2885784924

C++ 构造与析构函数.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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) 如果函数的返回值是类的对象,函数执行完成返回调用者时。;创建对象时,要么调用构造函数,要么调用复制构造函数。复制构造函数用一个已经存在的对象(由复制构造函数的参数指定的对象),去初始化另一个正创建的同类的对象。将已有对象的数据成员的值复制给正在创建的另一个同类的对象,以实现同类对象之间数据成员的数据传递。 (本类对象的复制) 每个类都有构造函数、析构函数和复制构造函数,如果定义类时没有给出它们的定义,则系统自动为类提供默认的。系统自动提供的默认构造函数和析构函数为空函数,什么都不做,而默认的复制

您可能关注的文档

文档评论(0)

ddf55855 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档