dev*_*saw 7 c++ pass-by-reference
我认为在C++中传递对引用的引用是违法的.但是,当我运行此代码时,它没有给我任何错误.
void g(int& y)
{
std::cout << y;
y++;
}
void f(int& x)
{
g(x);
}
int main()
{
int a = 34;
f(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
g()的形式参数是否有资格作为对引用的引用?
1)将引用传递给引用没有任何问题(这是移动构造函数和移动赋值运算符使用的 - 尽管它实际上称为右值引用)。
2)您所做的不是传递对引用的引用,而是将相同的引用传递f给g:
void g(int& x)
{
x = 5;
}
void f(int& x)
{
std::cout << "f-in " << x << std::endl;
g(x);
std::cout << "f-out " << x << std::endl;
}
int main()
{
int x = 42;
f(x);
std::cout << "New x = " << x << std::endl;
}
Run Code Online (Sandbox Code Playgroud)