首页 > 知识点讲解
       构造函数与析构函数
相关知识点:3个      
        1)构造函数
        一个类中的数据成员是不能直接初始化的。
        如:
        
        类类型提供构造函数,当创建类的一个新对象时,自动调用构造函数,完成初始化任务。
        构造函数具有如下特性。
        (1)构造函数没有返回值。
        (2)构造函数不能像其他成员函数那样被显式地调用,它在对象创建时被自动调用。
        (3)在一个类中可以定义多个构造函数,如果在类定义中没有定义构造函数,那么系统将自动生成一个默认构造函数,这个函数不带任何参数。在构造函数前不能加virtual关键字。
        构造函数的作用如下。
        (1)分配一个对象的数据成员的存储空间。
        (2)执行构造函数,一般是初始化一个对象的数据成员。构造函数的函数体完成初始化对象的数据成员,若希望该类所有对象的初始值相同,构造函数可以不使用参数;若希望该类所有对象的初始值不相同,通过使用带参数的结构函数可以做到这一点。
        构造函数有以下两种方式初始化数据成员。
        (1)赋值语句的方式。
        (2)表达式的方式。
        2)析构函数
        与构造函数对应的是析构函数。C++语言通过析构函数来处理对象的善后工作。析构函数主要的功能是对类中动态分配的内存进行释放,它在对象消失时自动调用。析构函数的一般定义形式为:
        
        析构函数没有返回类型,没有参数,函数名是类名前加"~"。
        析构函数的作用如下。
        (1)执行析构函数。
        (2)释放对象的存储空间。
        可以使用完全限定名方式显式地调用析构函数;若没有显式调用,则一个对象的作用域结束时,系统自动调用析构函数。
        用户定义的类类型中,可以没有析构函数,系统会自动给该类类型生成一个析构函数。
        在析构函数前可以加virtual关键字。因为在继承关系的多态环境中,究竟是哪个对象的析构函数有时不能确定,这时要使用virtual类型的析构函数。
        3)构造与析构的次序
        构造从类层次的最根处开始,在每一层中,首先调用基类的构造函数,然后调用成员对象的构造函数。析构则严格按照与构造相反的次序执行,该次序是唯一的,否则编译器将无法自动执行析构过程。一个有趣的现象是,成员对象初始化的次序完全不受它们在初始化表中次序的影响,只由成员对象在类中声明的次序决定。这是因为类的声明是唯一的,而类的构造函数可以有多个,因此会有多个不同次序的初始化表。如果成员对象按照初始化表的次序进行构造,这将导致析构函数无法得到唯一的逆序。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有