如何在Delphi中编写int &a
?
例如,在C ++中它是void ABC(int &a, int &b)
,但我不知道如何在Delphi中编写它。
答案 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并且打算将值传递出去。根据您移植的代码的语义,您可以根据具体情况选择var
或out
。
答案 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 }}