我认为在C中传递对引用的引用是违法的.但是,当我运行此代码时,它没有给我任何错误.
void g(int& y) { std::cout << y; y++; } void f(int& x) { g(x); } int main() { int a = 34; f(a); return 0; }
不是正式的参数
G()
是否有资格作为参考?
解决方法
1)传递对引用的引用没有任何问题(它是move-constructor和move-assignment运算符使用的 – 虽然它实际上被称为rvalue-reference).
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; }