matlab handle類和value類的區別

 handle類和value類又分別叫做:句柄類和實體類。

參考:https://blog.csdn.net/qq_43575267/article/details/94144564

 

handle類的對象在賦值時,不創建新的拷貝,只複製一個句柄,類似於C語言指針。舉個例子就明白了,如下:

classdef quaternion < handle

    properties
        data = zeros(4, 1);%列向量
    end
    
    methods %普通函數塊--開始
        function obj = quaternion(in4x1)
            obj.data = in4x1;
        end
       
    end %普通函數塊--結束
    
    
    
    methods(Static) %靜態函數塊---開始
        %可在這裏定義靜態函數 
    end %靜態函數塊---結束
    
end %類定義結束

測試代碼如下:

q1 = quaternion([1 2 3 4]');
q2 = q1;%這裏不會產生拷貝,只傳遞句柄
q2.data = [2 3 4 5];
disp(q1.data');

輸出結果爲: 2 3 4 5

 

 

當自己寫的類繼承value類時,對象間的賦值操作,會引發一次所有屬性值的拷貝,兩個對象各有各的內存空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章