首页 > 其他分享 > 2.解释一下什么是trivial destructor

2.解释一下什么是trivial destructor

时间:2023-08-02 22:22:53浏览次数:31  
标签:non 函数 destructor 解释一下 析构 trivial 构造函数

2.解释一下什么是trivial destructor

什么是 trivial destructor和 non-trivial destructor

如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如果特定定义了析构函数,则说明需要在释放空间之前做一些事情,则这个析构函数称为non-trivial destructor。

在C++的类中如果只有基本的数据类型,也就不需要写显式的析构函数,即用默认析构函数就够用了,但是如果类中有个指向其他类的指针,并且在构造时候分配了新的空间,则在析构函数中必须显式释放这块空间,否则会产生内存泄露,在STL中空间配置时候destory()函数会判断要释放的迭代器的指向的对象有没有 trivial destructor(STL中有一个 has_trivial_destructor函数,很容易实现检测),如果有trivial destructor则什么都不做,如果没有即需要执行一些操作,则执行真正的destory函数。

trivial意思是无意义,这个trivial和non-trivial是对类的四种函数来说的:

●构造函数(ctor)
●复制构造函数(copy)
●赋值函数(assignment)
●析构函数(dtor)

如果至少满足下面3条里的一条:

●显式(explict)定义了这四种函数。
●类里有非静态非POD的数据成员。
●有基类。

那么上面的四种函数是non-trivial函数,比如叫non-trivial ctor、non-trivial copy…,也就是说有意义的函数,里面有一下必要的操作,比如类成员的初始化,释放内存等。

参考:[C++ trivial和non-trivial构造函数及POD类型](

标签:non,函数,destructor,解释一下,析构,trivial,构造函数
From: https://www.cnblogs.com/codemagiciant/p/17601940.html

相关文章

  • 什么是PHP共享内存,用实例给你们解释一下
    什么是共享内存共享内存是一种在同一台机器的不同进程(应用程序)之间交换数据的方式。一个进程可创建一个可供其他进程访问的内存段,并赋予它相应的权限。每个内存段拥有一个惟一的ID,我们通常称之为shmid,这个ID指向一个物理内存区域,其他进程可通过此ID来操作这块内存,包扩读取、写......
  • C++11 可平凡复制类型 (TriviallyCopyable)
    可平凡复制类型标量类型(算数类型/枚举/指针)可平凡复制类类型可平凡复制类型的数组cv限定的可平凡复制类型(const/volatile)TriviallycopyableclassAtriviallycopyableclassisaclassthathasatleastoneeligiblecopyconstructor,moveconstructor,copyassi......
  • 解释一下为为什么使用 instance normalization可以消除说话人信息,保留说话人内容
    在contentencoder中使用instancenormalization,可以起到去除说话者信息的作用。首先来看一下instancenormalization的原理,一般会对输入语音做conv1d得到featuremap,有几个conv1dfilter就会得到几个featuremap,可以将这个过程理解为每一个filter都在提取声音的一个特征,通俗一点......
  • 为什么用线程池?解释一下线程池参数?
    1、降低资源消耗;提高线程利用率,降低创建和销毁线程的消耗。2、提高响应速度;任务来了,直接有线程可用可执行,而不是先创建线程,再执行3、提高线程的可管控性;线程是稀缺资源,使......
  • 为什么用线程池?解释一下线程池参数?
    1、降低资源消耗;提高线程利用率,降低创建和销毁线程的消耗。2、提高响应速度;任务来了,直接有线程可用可执行,而不是先创建线程,再执行3、提高线程的可管控性;线程是稀缺资源,使......
  • How to Avoid Trivial Solutions in Physics-Informed Neural Networks
        未发表(2021)本文也是关注采样点的一篇工作。主要从PINN的性能与采样点数量的关系方面入手考虑。提出了一个新的惩罚项,并对采样策略提出了一点看法。本文的工......
  • c++ trivial, standard layout和POD类型解析
    目录1.trivial类型2.standardlayout类型3.集大成者,POD(PlainOldData)类型4.测试代码1.trivial类型占用一片连续的内存,编译器可以重排成员变量的顺序或者增加一些pa......
  • 8. REM解释一下
    rem(rootem)是c3新增的相对单位,相对的是html根元素,动态变化自己的大小;补充:em也是相对单位,相对的是父元素来动态设置自己大小;px是绝对单位,是相对于屏幕......
  • Delphi 中constructor、destructor、property(构造函数,析构函数、属性)关键字的用法
    首先搜索现成的文章学习原文:https://www.cnblogs.com/guorongtao/p/15132445.html其次自己理解并总结最常见的用法constructor用来定义构造函数,destructor用来定义析构......