值传递与引用传递例子
int val()
{
int i = 1;
return i;
}
int & ref()
{
int i = 1;
return i;
}
int main()
{
int vv = val();
int & rv = val();
int vr = ref();
int & rr = ref();
}
区别和问题:
int vv = val(); // int <= int; 没有问题,值传递
int & rv = val(); // int& <= int;或int& <= const int&; 编译错误
int vr = ref(); // int <= int&; 引用为普通变量赋值,没有问题。但是ref()返回退栈后的变量,有可能造成数据失效。
int & rr = ref(); // int& <= int&; 赋值语法正确,但执行后rr引用退栈后的变量,极易造成访问冲突,隐患最大。
浙公网安备 33010602011771号