フィルターのクリア

Can handle class be used to simulate "Pointer" in C language?

10 ビュー (過去 30 日間)
Shunchao Wu
Shunchao Wu 2011 年 11 月 15 日
If I define a "Ptr" class as following:
classdef Ptr < handle
properties
data
end
end
then, objects of Ptr will behave like pointers in C language.
Is this true, guys?
  1 件のコメント
Shunchao Wu
Shunchao Wu 2011 年 11 月 15 日
Why is the "Bytes" 0 in Variable Editor?
The "Bytes" of a field of a struct, or a property of a object, is 0.
Verified on 2008a and 1010b.

サインインしてコメントする。

回答 (2 件)

Daniel Shub
Daniel Shub 2011 年 11 月 15 日
Objects of the handle class are not identical to pointers. When you pass an object to a function (whether it is a value class or a handle class), MATLAB does not immediately make a copy of the object. It is almost like it passes a pointer (but it is not a pointer). MATLAB has a complicated COW and tries not to copy the object unless it needs to. With a high level language of MATLAB you have to give up some of the control on memory management and hope MATLAB behaves in a reasonable manner.
  3 件のコメント
per isakson
per isakson 2011 年 11 月 15 日
Undocumented Matlab at, http://undocumentedmatlab.com/ , might interest you.
Shunchao Wu
Shunchao Wu 2011 年 11 月 16 日
Great website!
Thanks, isakson.

サインインしてコメントする。


Titus Edelhofer
Titus Edelhofer 2011 年 11 月 15 日
Hi,
"then objects of Ptr will behave like pointers". If the behaviour you mean is that once you change a Ptr, all other variables that "point" to the same object are changed as well, then yes. Example:
x = Ptr;
y = x; % both x and y "point" to the same object
x.data = 2; % now y.data is 2 as well
But I would say that "reference" like the & in C++ comes nearer to what handle classes are ...
Titus
  5 件のコメント
Titus Edelhofer
Titus Edelhofer 2011 年 11 月 16 日
hmm, why not? When you pass an object by reference to a function, the function may change the underlying/referenced object. Of course only, as long as you don't pass a const reference ... Or do I remember entirely wrong, since my C++ programming is about 10 years ago by now ;-).
Shunchao Wu
Shunchao Wu 2011 年 11 月 19 日
en, Titus is right.
The only difference between handle class and C++'s reference is, C++'s reference can not change to another value since initialization.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeBuild MATLAB Interface to C++ Library についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by