什么是Delphi相当于C ++参考参数?

时间:2013-01-24 13:53:29

标签: c++ delphi

如何在Delphi中编写int &a

例如,在C ++中它是void ABC(int &a, int &b),但我不知道如何在Delphi中编写它。

4 个答案:

答案 0 :(得分:7)

这是C ++中的参考参数。在Delphi中,对应于var parameter

procedure ABC(var a: Integer; var b: Integer);

文档说:

  

大多数参数是值参数(默认值)或变量(var)参数。值参数按值传递,而变量参数按引用传递。

答案 1 :(得分:4)

void ABC(int &a, int &b)

会变成

procedure ABC(var a: Integer; var b: Integer);

var关键字表示您希望通过引用传递值,而不是值。

答案 2 :(得分:1)

还有procedure ABC(out a: Integer; out b: Integer); 虽然它不完全是var-parameters,但它们也是by-ref并且打算将值传递出去。根据您移植的代码的语义,您可以根据具体情况选择varout

答案 3 :(得分:1)

正如其他人所指出的,等效的Delphi声明是procedure ABC(var a, b: Integer);,除非你的意图是声明一个外部C / C ++实现的函数Delphi代码可以调用,其中你需要考虑C / C ++函数的调用约定。如上所述,未指定调用约定的Delphi函数声明使用Delphi的register调用约定(在C ++ Builder中称为__fastcall)。您显示的C / C ++声明未指定调用约定,因此使用C / C ++编译器的默认调用约定,在大多数设置中为__cdecl,在这种情况下,等效Delphi声明将变为:{{1 }}