C及C++程序设计 教学课件 作者 张富 第十六章.ppt

C及C++程序设计 教学课件 作者 张富 第十六章.ppt

ID:50320008

大小:109.50 KB

页数:15页

时间:2020-03-08

C及C++程序设计 教学课件 作者 张富 第十六章.ppt_第1页
C及C++程序设计 教学课件 作者 张富 第十六章.ppt_第2页
C及C++程序设计 教学课件 作者 张富 第十六章.ppt_第3页
C及C++程序设计 教学课件 作者 张富 第十六章.ppt_第4页
C及C++程序设计 教学课件 作者 张富 第十六章.ppt_第5页
资源描述:

《C及C++程序设计 教学课件 作者 张富 第十六章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十六章类的工具16.1构造函数和析构函数16.2函数重载16.3运算符重载16.4对象的动态存储管理16.1构造函数和析构函数当我们建立了一个类并说明了这个类的对象后,对象的初始状态,即对象数据成员的值,是不确定的。构造函数属于类的成员函数。构造函数的函数名与类名同。它不需要函数类型说明,它也没有返回值。如果在类定义的成员函数中,没有说明构造函数,系统将提供一个构造函数。析构函数(destructor)是系统提供的另一个特殊成员函数,它的作用与构造函数相反,是消除一个对象,释放分配给对象的内存空间。析构函数的函数名是

2、在类名前加一个“~”号。16.1.1不带参数的构造函数不带参数的构造函数也称为缺省构造函数。如果程序中没有说明构造函数,编译程序将提供一个缺省构造函数,它不做任何操作,就如同说明了一个不带参数而且函数体为空的构造函数。如果需要缺省构造函数,必须用户自己定义。例如,我们定义了类counter,函数counter(void);便是类counter的缺省构造函数。调用构造函数的一般形式为:类名对象名;16.1.2析构函数一个对象进入其代码块时才建立,离开它的代码块时,就被撤消。在很多情况下,一个对象被撤消时,也要执行一些操作

3、,如释放它所占用的内存单元。析构函数就是用来自动(隐式地)作这项工作的。16.1.3带参数的构造函数通常在创立一个对象时,需要对它的各数据元素初始化,即给它们赋予特定的值。使用构造函数就可以在对象创立时对对象进行初始化。这样的初始化工作,是通过传递给构造函数的参数来实现的。通过调用带参数的构造函数进行对象初始化的一般形式为:类名对象名(初始化参数);16.1.4构造函数参数的缺省值构造函数的参数可以有缺省值。16.2函数重载下面将函数的重载问题分为一般函数重载,构造函数重载和成员函数重载三个方面来谈。16.2.1一般函

4、数的重载16.2.2构造函数重载构造函数是类的一个特殊的成员函数,但它也同样可以重载。这意味着,一个类可以定义若干个构造函数。当重载某个类的构造函数时,只需说明它可能采用的各种参数形式,定义出与这些参数形式相应的操作。16.2.3重载类成员函数与重载构造函数的情况一样,类的成员函数也可以进行重载。系统会根据函数参数类型的不同,选择相应的成员函数进行运算。16.2.4构造函数的动态初始化所谓构造函数的动态初始化,就是根据程序运行时获得的数据,创建适当的对象和进行适当的初始化。16.3运算符重载除了函数可以重载外,运算符也

5、能进行重载。操作符的重载是C++实现多态性的另一个手段。运算符的重载是使一些运算符对于某个类含有特定的意义,同时不影响运算符原来的基本含义。为了实现重载运算符,必须定义指定运算符在类中的具体操作的含义。因此,在类的成员函数中,必须定义一个叫做operator的运算符函数。此函数的一般形式为:typeclass_name::operator#(arg_list){//操作符定义 }要求运算符函数必须定义为类的成员函数或友元函数。16.3.1成员运算符函数的重载例16.3.1设有类complex。为该类的复数的加法运算,定

6、义重载运算符“+”。复数加法运算与一般的加法运算不同。复数加法是实部与虚部分别进行加。因此,对运算符“+”,必须重新定义。根据重载运算符函数的一般形式,应当定义如下的重载运算符函数:complexoperator+(complexx){ complextemp;temp.real=real+x.real; temp.imag=imag+x.imag;returntemp; }16.3.2友元运算符函数友元函数也可以作为运算符函数。由于友元函数没有隐含的参数this,因此,重载二元运算符时,两个操作数都必须显式地传递给函

7、数;重载一元函数时,不能省略唯一的操作数。16.4对象的动态存储管理在第十四章的14.3.10节中,对C++的动态存储管理已经作了介绍。这一节只对C++动态存储管理在类方面的应用,即对象的内存分配和释放作一简单说明。为对象申请内存和释放的一般格式为:obj_pointer=newclass_name(init_list); deleteobj_pointer;其中obj_pointer为用户定义的对象指针,class_name为用户定义的类名。(init_list)为对象的初始值,初始化部分是任选的。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。