美文网首页
析构函数

析构函数

作者: excuseyour | 来源:发表于2016-08-07 14:28 被阅读0次

value类与handle类析构函数的区别

value类

  • value类没有析构函数,自己定义的delete函数不会由MATLAB自动调用,只能由用户手动调用obj.delete()。

handle类

  1. handle类对象离开其作用域时,会自动调用delete。
  2. 重载的delete函数必须具有以下几点:
  • 方法的名字叫delete。
  • 方法没有返回值。
function delete(obj)
  ···
end
  • 方法只接受一个参数(参数不能是varargin),且该参数必须是 对象obj本身。
  • 方法不允许是Sealed、Static或Abstract,但可以是private(这样不能在外部显式地直接调用delete方法)。
    如果不满足以上任何一点,还可以作为一个普通方法调用,但不会被MATLAB自动调用。
  1. handle类delete调用后会释放该obj指向的数据,不会销毁此obj,但它会变为一个无效的句柄,可以重新赋值。
h1=handle();
h2=handle();
h1.delete(); %销毁h1指向的数据;
h1=h2; %给h1重新赋值;
h2.delete(); %销毁h1和h2共同指向的数据;
  1. MATLAB销毁局部handle对象(如在函数中没有被输出的对象)时不会影响另一个指向相同数据的handle类对象,只是把数据上的引用计数减一。
  2. 并非所有局部对象离开了作用域后都会被自动销毁(User-Manager Object)。
  3. 子类调用delete方法时,会强制调用基类delete方法,即使基类delete方法被生命成了私有Access=private。

相关文章

  • C++之析构函数

    析构函数的概述 析构函数 完成对象的清理工作,先清理,再释放对象空间。析构函数也是编译器自动调用。 析构函数 不能...

  • 简介python中的析构函数与构造函数

    python的构造和析构函数为固定的名字。 构造函数 析构函数 不像c++中那样构造函数和析构函数是类名字。并且在...

  • [C++之旅] 13 析构函数

    [C++之旅] 13 析构函数 析构函数与构造函数相反,构造函数在实例化一个对象时调用,而析构函数在销毁一个对象时...

  • C++基础-构造函数和拷贝函数

    构造函数 析构函数 析构函数: 相当于临终遗言,对象被回收的时候会被调用。如果有在对象内部开辟堆内存,在析构函数里...

  • C++总结

    函数 为什么基类的析构函数用虚函数 在实现多态时,当用基类操作派用类,在析构时防止只析构基类而不析构派生类的状况发...

  • 2020-02-10 C++基础2

    1:为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 将可能会被继承的父类的析构函数设置为虚...

  • C++三五法则

    1、需要析构函数的类也需要拷贝构造函数和拷贝赋值函数。 通常,若一个类需要析构函数,则代表其合成的析构函数不足以释...

  • 析构函数

    析构函数与构造函数相反,在一个类的实例被释放之前,析构函数被调用,析构函数使用关键字deinit来定义,类似于初始...

  • C++ 析构函数

    析构函数(destructor)是一种特殊的成员函数。 类的析构函数名是在类名前加一个波浪好~ 累的析构函数是在删...

  • 构造函数

    构造函数 构造函数的数组的应用 类中包含类,并且给类传参 析构函数(逆构造函数):每个构造函数都析构函数,谁最先构...

网友评论

      本文标题:析构函数

      本文链接:https://www.haomeiwen.com/subject/eajlsttx.html