• Matlab指针


    Matlab指针

    第一印象貌似是Matlab中不存在指针,所有变量与函数的赋值都是按值传递的,不会对参数进行修改。其实Matlab提供了handle类作为指针代替品。只要我们利用handle子类,就可以像使用指针一样来操作对象中包含的数据。

    handle 类可参考 Matlab Object-Oriented Programming R2012a 第五章中介绍内容。

    Matlab Object-Oriented Programming R2012a
    ch5. Value or Handle Class
    A handle class constructor returns a handle object that is a reference to the object created. You can assign the handle object to multiple variables or pass it to functions without causing MATLAB to make a copy of the original object. A function that modifies a handle object passed as an input argument does not need to return the object.

    由上面所述内容可看出,handle类型对象在赋值给其他变量时,不会对原始对象进行复制。此外,在函数中对handle类型对象做修改后,也不需在将其作为返回参数输出。也就是说,在使用handle类型对象时,我们可以认为所操作的就是一个指针,其指向的内容就是构造函数初始化的实例。

    实例—Filewriter类

    首先给个类的文件Filewriter.m

    classdef Filewriter < handle
        properties(SetAccess=private, GetAccess=public)
            num
        end
    
        methods
        % Construct an object and set num
            function obj = Filewriter(num)
                obj.num = num;
            end
    
            function addOne(obj)
                obj.num = obj.num +1;
            end
            
        end % methods
    end % class
    

    我们通过如下语句使用这个自定义的对象:

    file = Filewriter(1)
    

    这句代码实现了两个功能,将类实例化了一个对象(object),并将该对象的句柄赋给变量file

    毫无疑问,我们调用file.addOne成员函数就可以对变量file自身进行操作。

    但是我们还是不放心,假如我调用下面语句,我是将file对象指向地址给了other_file,还是另外为其实例化了一个对象?

    other_file = file;
    

    用下面方法验证

    >> other_file = file
    other_file = 
    
      Filewriter with properties:
    
        num: 2
    
    >> other_file.addOne
    >> file
    file = 
    
      Filewriter with properties:
    
        num: 3
    

    可以看到,通过句柄other_file对实例化的对象进行的操作直接作用在file所指对象上。因此,Matlab 中handle类对象和指针功能是类似的。

  • 相关阅读:
    HTML5中的FileSystem API的一个问题(或者是BUG)
    TSQL入门(二)——创建表
    javascript绘制谢尔宾斯基三角形(Sierpinski triangle)
    VS2010操作SQL SERVER CE 4.0数据库
    TSQL入门(三)——增删改(INSERT、DELETE、UPDATE)
    IE6警告框
    TSQL入门(二)——创建表
    TSQL入门(一)——创建数据库
    TSQL入门(一)——创建数据库
    javascript绘制谢尔宾斯基三角形(Sierpinski triangle)
  • 原文地址:https://www.cnblogs.com/li12242/p/4242038.html
Copyright © 2020-2023  润新知