什么是变量 &-> double&

what's a variable with & -> double&

本文关键字:double gt 变量 什么      更新时间:2023-10-16

所以我有一个在c++中制作的类,需要将其转换为vb.net,但我遇到了转换函数的某一部分的问题。

void deg_min_sec2decimal(double deg, double min, double sec, double& dec_deg)
{
    dec_deg = (deg+min/60.0+sec/3600.0);
}

什么类型的变量是"double&",我知道一个double,但是"&"是什么?它不是" double &dec_deg"所以它不是一个地址(指针等)?

以及如何将其转换为vb.net?

Grtz

这是一个引用。这意味着无论你在函数内部设置了什么值,从外部传入的原始变量将具有该值。

您可以使用ByRef 将其转换为VB,使函数返回该表达式的结果,而不是接受double&,并设置您将传递给函数的结果的变量。

如果你之前有这个:

double retval;
deg_min_sec2decimal(something, something2, something3, retval);

可以改成

Dim retval = deg_min_sec2decimal(something, something2, something3)

(我不懂VB,所以语法可能是错误的,但你得到的想法。)

我选择后者,因为通过参数返回东西通常只在需要多个返回值时使用,而该函数甚至不返回任何东西。

double&只是通过引用传递的double类型。在VB。. NET,则声明为ByRef dec_deg as Double

编辑:但是,我建议不要使用void函数通过引用来设置值,只需将返回类型更改为double并返回表达式,而不必通过引用传递变量。

double&是对双精度体的引用。这意味着在这种情况下,函数可以改变传递的形参的值。

在VB中,您可以通过ByRef参数来实现:
Sub deg_min_sec2decimal(deg as Double, min as Double, sec as Double, ByRef dec_deg as Double)

是的,它是一个地址("reference"是正确的c++术语)。不管'&'是在左边还是在右边,c++不关心空格

double& d; // Same as...
double &d;

是的,它是一个地址,但术语是一个引用。也就是说,您对参数所做的操作将影响传递给它的变量。在VB中,对应的是ByRef:

sub someFunc(ByRef someVar as double)