| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 《C++析构函数及其拷贝构造函数和运算符重载》 -> 正文阅读 |
|
[C++知识库]《C++析构函数及其拷贝构造函数和运算符重载》 |
C++析构函数 1.概念:通过前面构造函数的学习,我们知道一个对象是怎么来的,那么一个对象有事怎么没的呢? ? 析构函数:与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象销毁工作也是由编译器完成的,而对象在销毁时会自动调用析构函数,完成对象中资源的清理工作。 2.特性 ? 析构函数是特殊的成员函数,其特征如下: ? 1.析构函数是在类前面加上字符~。 ? 2.无参数无返回值类型 ? 3.一个类只能有一个析构函数。若未显示定义,系统会自动生成默认的析构函数。注意:析构函数不能重载。 ? 4.对象生命周期结束时,C++编译系统自动调用析构函数 ? 5.编译器生成的默认析构函数,对自定义类型成员调用它的析构函数。 ? 6.如果类中没有申请资源时,析构函数可以不写,直接使用编译器生成的默认析构函数。但是有资源申请时,一定要写,否则会造成资源泄露。 tips:构造函数是让你这个对象在创建时对那些成员进行初始化,析构函数则是对你拥有的这些初始化的对象进行毁灭处理。 C++拷贝构造函数 拷贝构造函数也是特殊的成员函数,有如下几个特征 1.拷贝构造函数是构造函数的一个重载形式 2.拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。 tips:注意在编译器生成默认的拷贝构造函数中,内置类型是按照字节方式直接实现的拷贝的,而自定义类型是调用其拷贝函数完成拷贝的 tips2:需要写析构函数的类,都需要写深拷贝的拷贝构造 ? ? ? ? ? ? 不需要写析构函数的类,默认生成的浅拷贝的拷贝构造就可以用 运算符重载: 前面我们知道了函数的重载,这里我们又看到了运算符的重载,其实他的原理和函数的重载是一样的,有具体的函数名和其参数列表,其返回值类型和参数列表和普通的函数类似。 函数名字为:关键字operator后面接需要重载的运算符符号。 函数原型:返回值类型operator操作符(参数列表) 注意: 不能通过链接其他符号来创建一个新的操作符:比如operator@ 重载操作符必须要有一个类类型参数 用于内置类型的运算符,其含义不能改变,比如内置的整形+,不能改变其含义 作为类成员的函数重载时,其形参看起来比操作数数目少一,因为成员函数的第一个参数为隐藏的this。 .* :: sizeof ?:? .注意以上五个运算符不能重载,这个在笔试选择题中经常出现 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 4:33:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |