指针x引用Delphi中的类

时间:2013-04-03 18:47:40

标签: delphi pointers dereference

使用Pointer而不是引用类是否有任何优势? 例如:

TMyClass = class(TObject);

procedure Method;
var
    pmc : ^TMyClass;
    //instead of
    mc : TMyClass;       
begin
   pmc := @ObjectMyClass;
   //instead of
   mc := ObjectMyClass;

   if pmc.Enabled then
      blablabla;
   //instead of
   if mc.Enabled then 
     blebleble;           
end;

1 个答案:

答案 0 :(得分:4)

Delphi中的所有类都通过引用传递/使用,因此添加另一个间接级别不会添加任何内容。

这不适用于始终按值传递/使用的记录。通过引用指针类型并通过使用指针类型或var关键字(为您处理指针函数参数mess)将它们传递给函数,可以通过引用使用它们。

(Ctrl + F代表“类”) http://docwiki.embarcadero.com/RADStudio/XE3/en/Pointers_and_Pointer_Types

如果您熟悉C / C ++,^ TMyClass相当于:

**MyClass

这在某些情况下很有用,例如当你想通过将指针传递给指向该函数的指针来使用函数编辑指针时,我怀疑这些结构是否可以使用Delphi。