C++之构造函数和析构函数总结

2024-05-12 23:08

本文主要是介绍C++之构造函数和析构函数总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C++等级考试已经临近了,而我还是对它没有一丝的“赶脚”。无奈之下,只有先通过做题来应付考试了……

这几天一直在看那本被我“抛弃”了很多遍的《C++上机考试题库》的书。但是,大部分仍然是搞不懂。所幸的是,对其中的构造函数和析构函数有了一丁点儿的了解,在此写出来也算是总结一下,加深些印象……

构造函数

简介构造函数是一个计算机术语,是一种特殊的方法,主要用来在创建对象时初始化对象,构造函数的命名必须和类名完全相同,而一般方法则不能和类名相同。以上都是官方比较正式的语言。让我自己理解的是构造函数就像开一辆车的时候我们要在开车前仔细调好刹车、加速器、离合器、座椅位置、汽油、机油等一系列的操作。

特征:

1.   函数名与类名相同。

2.   无函数(返回)类型说明

3.   构造函数在一个新的对象被建立时,该对象所隶属的类的构造函数自动的被调用,对这个对象完成初始化工作。

4.   在上一条提到的新对象的建立包括两种情况:在对象说明语句中,用new 函数建立新的动态对象时。

5.   如果一个类说明中没有给出现实的构造函数,系统将自动给出一个缺省的(隐式的)构造函数。

6.   如果说明中包括多个构造函数,一般他们有不同的参数表和函数体。系统在(自动)调用构造函数时按照一般函数从在的规则选择其中之一。

其中前面的两条在做题的时候,是判断构造函数的比较实用的方法。


析构函数

简介:析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。说白了就像刚刚在构造函数中举得例子一样。它就是车辆长时间不开了,我们就需要将他的各种零件都调到比较松散的状态,水箱的水都要放掉……

特征:

1.  析构函数类名一律为:~<类名>,如:~point

2.  无函数返回类型

3.  无参数

4.  一个类只可以有一个析构函数,也可以缺省。

5.  在对象注销时,包括用delete函数释放动态对象时,系统自动调用析构函数。

6. 若某个类定义中没有给出显示的析构函数,则系统自动给出一个缺省的(隐式的)析构函数。如:~<类名>(void){}  

其中,前面的三条也可以作为判断是否为析构函数的判断标准。


这篇关于C++之构造函数和析构函数总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983998

相关文章

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑