kik*_*iki 2 c++ double reference declaration
typedef double real8;
typedef real8 Real_t;
Real_t& x(int y);
Run Code Online (Sandbox Code Playgroud)
什么是Real_t&?? 我只看到一个数据类型后跟"&"表示通过引用传递.但这是在申报行中.这是什么意思 ?
这意味着该函数返回对Real_t实际为a的引用double.的Real_t是real8这是一个double,如果你解决所有的typedef.
你在这应该小心.如果未通过函数结尾的范围检索通过引用传递的结果,那么您将有一个悬空引用.
例如:
int& foo() {
int x = 8;
return x;
}
int main() {
int y = foo();
}
Run Code Online (Sandbox Code Playgroud)
变量,y在main中最终引用一个变量,当它foo()返回时它已经被超出范围,因此使用它是未定义的行为.如果x从一个单独的东西或者一个超出函数范围的东西中检索出来foo(),那么它仍然会存在,这样就可以了.
人们有时会在编译单元之间以确定的方式返回对初始化静态全局变量的引用,因此您可能会看到这与静态一起使用,如:
MyClass& MyStaticVar() {
static MyClass instance;
return instance;
}
Run Code Online (Sandbox Code Playgroud)
哪个也没关系,因为初始化后程序的持续时间是静态的.
它意味着x是一个返回对a的引用的函数Real_t.
通过引用返回的示例是用于类中的数据访问.例如,std :: vector :: at()返回对向量元素的引用.
对于安全返回引用的自由函数,函数内部必须存在不明显的内容,以确保不返回悬空引用.