ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:25KB ,
资源ID:6555793      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6555793.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++类的设计,构造函数和析构函数.doc)为本站会员(ysd1539)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

C++类的设计,构造函数和析构函数.doc

1、类是编程人员表达自定义数据类型的 C+机制。它和 C 语言中的结构类似,C+ 类支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设计和实现。一、类的设计1.类的声明class 类名private: /私有.public: /公有.;2.类的成员一般在 C+类中,所有定义的变量和函数都是类的成员。如果是变量,我们就叫它数据成员如果是函数,我们就叫它成员函数。3.类成员的可见性private 和 public 访问控制符决定了成员的可见性。由一个访问控制符设定的可访问状态将一直持续到下一个访问控制符出现,或者类声明的结束。私有成员仅能被同一个类中的成员函数访问,公有成员既可以被同

2、一类中的成员函数访问,也可以被其他已经实例化的类中函数访问。当然,这也有例外的情况,这是以后要讨论的友元函数。类中默认的数据类型是 private,结构中的默认类型是 public。一般情况下,变量都作为私有成员出现,函数都作为公有成员出现。类中还有一种访问控制符 protected,叫保护成员,以后再说明。4.初始化在声明一个类的对象时,可以用圆括号()包含一个初始化表。看下面一个例子:#include iostream.hclass Boxprivate:int height,width,depth; /3 个私有数据成员public:Box(int,int,int);Box();int

3、volume(); /成员函数;Box:Box(int ht,int wd,int dp)height=ht;width=wd;depth=dp;Box:Box()/nothingint Box:volume()return height*width*depth;int main()Box thisbox(3,4,5); /声明一个类对象并初始化coutTHISBOX.VOLUME()ENDL;return 0;当一个类中没有 private 成员和 protected 成员时,也没有虚函数,并且不是从其他类中派生出来的,可以用来初始化。( 以后再讲解)5.内联函数内联函数和普通函数的区别是:

4、内联函数是在编译过程中展开的。通常内联函数必须简短。定义类的内联函数有两种方法:一种和 C 语言一样,在定义函数时使用关键字inline。如:inline int Box:volume()return height*width*depth;还有一种方法就是直接在类声明的内部定义函数体,而不是仅仅给出一个函数原型。我们把上面的函数简化一下:#include iostream.hclass Boxprivate:int height,width,depth;public:Box(int ht,int wd,int dp)height=ht;width=wd;depth=dp;Box();int v

5、olume()return height*width*depth;int main()Box thisbox(3,4,5); /声明一个类对象并初始化coutTHISBOX.VOLUME()ENDL;return 0;这样,两个函数都默认为内联函数了。二、构造函数什么是构造函数?通俗的讲,在类中,函数名和类名相同的函数称为构造函数。上面的 Box()函数就是构造函数。C+允许同名函数,也就允许在一个类中有多个构造函数。如果一个都没有,编译器将为该类产生一个默认的构造函数,这个构造函数可能会完成一些工作,也可能什么都不做。绝对不能指定构造函数的类型,即使是 void 型都不可以。实际上构造函数默

6、认为 void型。当一个类的对象进入作用域时,系统会为其数据成员分配足够的内存,但是系统不一定将其初始化。和内部数据类型对象一样,外部对象的数据成员总是初始化为 0。局部对象不会被初始化。构造函数就是被用来进行初始化工作的。当自动类型的类对象离开其作用域时,所站用的内存将释放回系统。看上面的例子,构造函数 Box()函数接受三个整型擦黑素,并把他们赋值给立方体对象的数据成员。如果构造函数没有参数,那么声明对象时也不需要括号。1.使用默认参数的构造函数当在声明类对象时,如果没有指定参数,则使用默认参数来初始化对象。#include iostream.hclass Boxprivate:int h

7、eight,width,depth;public:Box(int ht=2,int wd=3,int dp=4)height=ht;width=wd;depth=dp;Box();int volume()return height*width*depth;int main()Box thisbox(3,4,5); /初始化Box defaulbox; /使用默认参数coutTHISBOX.VOLUME()coutDEFAULBOX.VOLUME()return 0;2.默认构造函数没有参数或者参数都是默认值的构造函数称为默认构造函数。如果你不提供构造函数,编译器会自动产生一个公共的默认构造函数

8、,这个构造函数什么都不做。如果至少提供一个构造函数,则编译器就不会产生默认构造函数。3.重载构造函数一个类中可以有多个构造函数。这些构造函数必须具有不同的参数表。在一个类中需要接受不同初始化值时,就需要编写多个构造函数,但有时候只需要一个不带初始值的空的 Box 对象。#include iostream.hclass Boxprivate:int height,width,depth;public:Box() /nothing Box(int ht=2,int wd=3,int dp=4)height=ht;width=wd;depth=dp;Box();int volume()return

9、height*width*depth;int main()Box thisbox(3,4,5); /初始化Box otherbox; otherbox=thisbox;coutOTHERBOX.VOLUME();ENDL;return 0;这两个构造函数一个没有初始化值,一个有。当没有初始化值时,程序使用默认值,即 2,3,4。但是这样的程序是不好的。它允许使用初始化过的和没有初始化过的 Box 对象,但它没有考虑当 thisbox 给 otherbox 赋值失败后,volume()该返回什么。较好的方法是,没有参数表的构造函数也把默认值赋值给对象。class Boxint height,wi

10、dth,depth;public:Box()height=0;width=0;depth=0;Box(int ht,int wd,int dp)height=ht;width=wd;depth=dp;int volume()return height*width*depth;这还不是最好的方法,更好的方法是使用默认参数,根本不需要不带参数的构造函数。class Boxint height,width,depth;public:Box(int ht=0,int wd=0,int dp=0)height=ht;width=wd;depth=dp;int volume()return height*width*depth;三、析构函数当一个类的对象离开作用域时,析构函数将被调用(系统自动调用)。析构函数的名字和类名一样,不过要在前面加上 。对一个类来说,只能允许一个析构函数,析构函数不能有参数,并且也没有返回值。析构函数的作用是完成一个清理工作,如释放从堆中分配的内存。我们也可以只给出析构函数的形式,而不给出起具体函数体,其效果是一样的,如上面的例子。但在有些情况下,析构函数又是必需的。如在类中从堆中分配了内存,则必须在析构函数中释放

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报