具有引用类型的函数 return
Function with reference type return
我对两者的区别感到困惑
int& refReturn(int &ref){ //return type int&
ref++;
return ref;
}
int main(){
int num1 = 1;
int num2 = refReturn(num1);
}
和
int refReturn(int &ref){ //return type int
ref++;
return ref;
}
int main(){
int num1 = 1;
int num2 = refReturn(num1);
}
这两个结果似乎都导致 num2 未引用 num1。那么为什么人们会更喜欢其中之一呢?
return参考 (int&
) 和非参考 (int
) 之间的主要区别是非参考是 return参考复制,return引用是return引用现有项目。
函数:
int refReturn(int &ref){ //return type int
ref++;
return ref;
}
将增加变量 ref
(实际内容将被修改,因为您通过引用传递),然后 return 增量值的副本。
函数:
int& refReturn(int &ref){ //return type int
ref++;
return ref;
}
会增加变量ref
(实际内容会被修改,因为你通过引用传递),然后return变量,这样它就可以被修改(没有副本return编)。
以上函数允许您执行以下操作:
int main(void)
{
int a = 6;
refReturn(a) = 27;
cout << "Value of a is: " << a << endl;
return 0;
}
在上面的程序中,refReturn
函数将 a
递增 1 和 return 对变量的引用。赋值运算符会将 27 赋值给引用,即 a
。因此 a
.
的输出应该是 27
我觉得两者基本相同。有一种从引用到整数到整数的转换。就像:
int num1=1;
int &ref=num1;
int num2=static_cast<int>(++ref);
不同的是,在第一种情况下,从引用到整数的转换(如果有这样的转换)发生在主函数中。而在第二种情况下,转换发生在 refReturn 函数中。
是的,num2 不是对 num1 的引用。 num2 是一个普通变量。如果你想要 num2 引用 num1 那么你需要将 num2 更改为这样的引用变量:
int &num2=refReturn(num1);
注意:这适用于第一个 refReturn 函数。
我对两者的区别感到困惑
int& refReturn(int &ref){ //return type int&
ref++;
return ref;
}
int main(){
int num1 = 1;
int num2 = refReturn(num1);
}
和
int refReturn(int &ref){ //return type int
ref++;
return ref;
}
int main(){
int num1 = 1;
int num2 = refReturn(num1);
}
这两个结果似乎都导致 num2 未引用 num1。那么为什么人们会更喜欢其中之一呢?
return参考 (int&
) 和非参考 (int
) 之间的主要区别是非参考是 return参考复制,return引用是return引用现有项目。
函数:
int refReturn(int &ref){ //return type int
ref++;
return ref;
}
将增加变量 ref
(实际内容将被修改,因为您通过引用传递),然后 return 增量值的副本。
函数:
int& refReturn(int &ref){ //return type int
ref++;
return ref;
}
会增加变量ref
(实际内容会被修改,因为你通过引用传递),然后return变量,这样它就可以被修改(没有副本return编)。
以上函数允许您执行以下操作:
int main(void)
{
int a = 6;
refReturn(a) = 27;
cout << "Value of a is: " << a << endl;
return 0;
}
在上面的程序中,refReturn
函数将 a
递增 1 和 return 对变量的引用。赋值运算符会将 27 赋值给引用,即 a
。因此 a
.
我觉得两者基本相同。有一种从引用到整数到整数的转换。就像:
int num1=1;
int &ref=num1;
int num2=static_cast<int>(++ref);
不同的是,在第一种情况下,从引用到整数的转换(如果有这样的转换)发生在主函数中。而在第二种情况下,转换发生在 refReturn 函数中。
是的,num2 不是对 num1 的引用。 num2 是一个普通变量。如果你想要 num2 引用 num1 那么你需要将 num2 更改为这样的引用变量:
int &num2=refReturn(num1);
注意:这适用于第一个 refReturn 函数。