Delphi通过引用返回值 在C++中,我可以编写这样的函数:< /p>

Delphi通过引用返回值 在C++中,我可以编写这样的函数:< /p>,delphi,Delphi,int测试(参数){ } 返回的值只是一个数字(r值)。但也有可能做到这一点: int&test(参数){ } 在这种情况下,函数返回一个“完整变量”。这意味着返回的值不只是像以前那样的值,而是一个具有r值和l值的完整变量 这在德尔福可能吗?第一个函数是函数测试(params):整数 delphi不支持引用语义,如C++。唯一可用的选项是: 返回一个指针: function test(params): PInteger; 使用var或out输出参数: procedure test(para

int测试(参数){
}

返回的值只是一个数字(r值)。但也有可能做到这一点:

int&test(参数){
}

在这种情况下,函数返回一个“完整变量”。这意味着返回的值不只是像以前那样的值,而是一个具有r值和l值的完整变量

这在德尔福可能吗?第一个函数是
函数测试(params):整数

我在尝试实现并行for循环时也看到了类似的情况。看,有一个
&
。它有参考意义吗?我自己找不到好的答案。

< P> delphi不支持引用语义,如C++。唯一可用的选项是:

  • 返回一个指针:

    function test(params): PInteger;
    
  • 使用
    var
    out
    输出参数:

    procedure test(params; var output: Integer);
    
    procedure test(params; out output: Integer);
    

这里的文档中解释了
&
:它基本上是用来“转义”保留字参见:谢谢,我在文档中没有看到这一点。我参加C++类,我想在Delphi和C++之间进行比较(而不是java在这种情况下的OC),所以我对存在的问题感到困惑,在文档中发现这一点很难。这是一个例子,你需要知道它的意思,以便能够搜索它!但是如果你想返回一个完整的值,请不要返回指针!var/out解决方案是最好的,@RudyVelthuis说,笼统的说法对我来说没有多大意义。有时返回引用是合适的,有时则不合适。这取决于您尝试实现的目标。@Remy
var
out
与返回引用不对应。它们对应于传入引用。@David:如果必须返回值或记录,指针总是一个错误的选择。是的,这是一个笼统的语句,如果指针只是指向传入内容的指针,这很好,但一般来说,情况并非如此。通常,通过指针返回值是个坏习惯。@Rudy,你不明白。如果要返回引用,请返回引用。如果要返回值,请返回值。类型与此无关。有时需要返回引用,有时需要返回值。你不能一概而论。如果我想允许调用者修改我拥有的某个值,那么返回一个值并不能完成它。反之亦然。