目录

析构函数:

什么是析构函数:

析构函数的定义:

析构函数的特点:

this指针:

注意事项:


析构函数:

和构造函数作用正好相反,析构函数本质上还是一个函数,构造函数是创建对象的同时系统自动调用构造函数、
而析构函数则是在对象生命周期结束的时候,系统自动调用析构函数,总的来说,构造函数是对象刚创建时就要完成的功能,
想让这个对象刚出生时就完成什么事情,那就用构造函数,而对象生命周期结束之后,有什么心愿未了,用析构函数,但是
要注意的是,析构函数是死了才完成心愿,而不是为了完成心愿而死

什么是析构函数:

1、特殊的成员函数
2、对象声明周期结束时系统自动调用

析构函数的定义:

语法要求
1、函数名:~类名
2、没有返回值类型和返回值,形参列表永远是空的(这也是为什么不能进行重载的原因)
3、不允许重载

代码格式:

~函数名(形参表)
{

}

***注意析构函数和构造函数在代码格式上只差了个~和形参列表永远为空

构造函数代码格式                   
函数名(类名)(形参列表)
{

}
析构函数代码格式
~函数名(类名)(形参列表)//不过形参列表永远为空
{

}

1、析构函数可以主动通过对象调用(必须是公有属性)
2、在对象生命周析期结束时,系统会主动调用析构函数

析构函数的特点:

1、析构函数做的事是对对象做一些清理工作
主动调用析构函数,并不会释放对象。因为是结束生命周期之后才会完成心愿,而不是完成心愿之后结束生命
******一个类只有一个析构函数。因为类定义出来了,因为类的名字就是析构函数的函数名,而析构函数的形参列表又永远为空

this指针:

1、什么是this指针:this指针是系统能够自动生成且隐藏的,看不到定义,但是可以使用
2、this指针并不是对象本身的一部分,它的作用域在类的内部。就比如类是皇帝,对象是大臣,this是专门属于皇帝的
而且在计算类的内存大小的时候是不算this指针的大小的。
3、当类的普通函数在访问类的普通成员的时候,this指针总是指向调用者对象,谁去调用的,就指向谁的,也可以理解为this指针保存着类的整个地址
比如一个成员函数showdate()
这就是一个普通函数,在访问类的成员时:

void classname::showdate()
{num;//但实际上是this->num;
}

使用this指针:
1、必须在类中使用,在类外是使用不了的
2、this->成员名   或者(*this).成员名;

注意事项:

1、一般情况下,可以省略this指针
2、在类中函数的形参和类中成员同名时,不能省略
比如:

void classname::fun(int val)
{this->val = val;//不能省略this,因为编译器会分不清,哪个val是类中成员,哪个val是形参,就分不清谁赋值给谁了
}

析构函数和this指针相关推荐

  1. C++构造函数、析构函数、this指针、初始化列表

    构造函数 一. 构造函数是干什么的 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数 ...

  2. 在析构函数中delete this指针问题

    思考:在析构函数中delete this指针,运行下面代码会产生什么样的结果呢? #include <iostream> using namespace std; class A{ pub ...

  3. C++中智能指针的设计和使用

    智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露.它的一种通用实现技术是使用引用计数(reference ...

  4. C++ 智能指针std::shared_ptr简单使用和理解

    参考:https://blog.csdn.net/u011068702/article/details/83692838 1  智能指针std::shared_ptr相关知识和如何使用 我们这里先说下 ...

  5. C++智能指针(设计和使用)

    前段时间学习project Anarchy引擎,底层很多都是用的只能指针,学了之后一直没用过的,到现在终于算是见到实际作用了,现在重新温故下 智能指针(smart pointer)是存储指向动态分配( ...

  6. 类对象和类指针深入分析与对比

    1.前言 Student a; s.setName("A");//Studeng *b = new Student(); Student *b; b = new Student() ...

  7. Qt智能指针--QScopedPointer

    文章目录 概述 QScopedPointer const 限制 考虑一种情况 QScopedArrayPointer 概述 前一篇文章我们详细的介绍了QPointer的用法,那么,这里继续总结Qt的另 ...

  8. 智能指针——auto_ptr

    1. 开篇 C++里面的四个智能指针:auto_ptr.unique_ptr.shared_ptr.weak_ptr,其中后三个是C++11支持,而这个auto_ptr已经被C++11弃用.但auto ...

  9. java不用析构函数,堆栈分配的类--C发生不需要的析构函数调用

    在Game类函数中,我将一个Boundary类分配给堆栈 void Game::loadContent() { Boundary b(this, body); } 边界类有一个指向主Game类的指针和 ...

最新文章

  1. Goolge新AI算法实时生成3D场景 | 可下载
  2. 图像技术在直播中怎么用
  3. linux——高级网络配置之bond、team网络接口,网络桥接
  4. 专业的PDF组件Spire.PDF for .NET V3.9.124发布|支持图标布局
  5. 序列化框架MJExtension详解 + iOS ORM框架
  6. 【Python基础入门系列】第10天:Python 类与对象
  7. C语言 strcat_s 函数 - C语言零基础入门教程
  8. html乱码框框,springmvc+font-awesome开发出的页面显示方框乱码的解决方法
  9. (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节1:I/O设备的概念和分类
  10. 百度Android定位API使用指南
  11. (92)低速接口UART、IIC、SPI介绍,面试必问(十六)(第19天)
  12. 去除android2.1移动设备3G图标
  13. bzoj 2152: 聪聪可可(树的点分治)
  14. 人脸方向学习(十八):Face Landmark Detection-SAN-解读
  15. Meta-Programming in Python
  16. Verilog:三段式状态机(数字钟)
  17. 测试cs架构的软件,基于UI的CS架构软件自动化测试方法及系统
  18. React-微信网页开发总结
  19. 抓rtmp推流地址_在浏览器中实现RTMP推流
  20. 《中台产品经理宝典》读后感11:大白话说透时下备受追捧的数字化转型是什么?

热门文章

  1. leetcode135 分糖果
  2. 杰理之广场舞音响知识点2
  3. redis网络模型解析
  4. SSM 学习管理系统
  5. 数学知识——素数回文
  6. java头像_用java实现给你的头像) +n
  7. 吴恩达深度学习第四课第一周 卷积神经网络
  8. 国内外主流云主机平台对比(含Github Education Pack的申请流程)
  9. 使用wget从某云端硬盘下载文件
  10. 我从事的软件培训果真是一个很不入流的职业吗?