gpt4 book ai didi

c++ - double&(不通过引用传递)C++

转载 作者:太空狗 更新时间:2023-10-29 23:26:38 25 4
gpt4 key购买 nike

typedef double real8;

typedef real8 Real_t;

Real_t& x(int y);

什么是Real_t&??我只看到一个数据类型后跟“&”来表示按引用传递。但这是在申报行中。这是什么意思?

最佳答案

这意味着该函数返回对 Real_t 的引用这实际上是一个 double . Real_treal8这是 double如果您解析所有类型定义。

你应该小心这里。如果通过引用传递的结果不是从函数末尾之后存在的范围中检索到的,那么您将拥有一个悬空引用。

例如:

int& foo() {
int x = 8;
return x;
}

int main() {
int y = foo();
}

变量,y ,在 main 中最终引用了一个变量,该变量在 foo() 时超出范围而被破坏。返回,所以使用它是未定义的行为。如果x已从单例或函数范围之外的对象中检索到 foo() ,那么它仍然会存在,这样就没问题了。

人们有时会返回引用以在编译单元之间以确定性方式初始化静态全局变量,因此您可能会看到它与静态变量一起使用,例如:

MyClass& MyStaticVar() {
static MyClass instance;
return instance;
}

这也没关系,因为初始化后静态会在程序持续时间内存在。

关于c++ - double&(不通过引用传递)C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com