我理解参考变量的概念。它是另一个变量的别名。
int varA = 100;
int &varB = varA;
此处varB
指的是varA
,两者都指向相同的内存位置。对一个变量的更改反映在另一个变量中。
问题:
a)int &c = 100;
上述陈述的含义是什么,它与以下内容有何不同?
b)int c = 100;
我们是否需要使用1(a)而不是1(b)?
答案 0 :(得分:3)
一切都是正确的,除了这个:
int &c = 100; //error
它将在C ++ 03和C ++ 11中产生编译错误。这是因为它试图将非const引用绑定到不允许的临时对象(由100
创建)。
在C ++ 11中,你可以这样做:
int && c = 100; //ok
它被称为rvalue-reference。
您可以将 const引用绑定到临时(在C ++ 03和C ++ 11中):
int const & c = 100;
-
int c = 100;
它只是定义一个名为c
的对象,并使用100
对其进行初始化。这里没有参考。
答案 1 :(得分:3)
int &c = 100
是无效代码,您不能将非const引用绑定到临时代码。
要使其有效,您需要const
参考:
const int &c = 100;
虽然,
int c = 100
是有效的代码。它会创建一个名为c
的{{1}}类型的变量,并使用int
对其进行初始化。
答案 2 :(得分:2)
1)int& c = 100;
是非法的,而第二个则不是。
我理解参考变量概念。
如果您真的了解参考文献,您是否期望c = 101
100
常数101
突然变为{{1}}?
2)回答没有意义,因为1)是非法的。
答案 3 :(得分:2)
int& i = 100;
是非法的。
说法律是合法的:
int const& i = 100;
const int& i = 100; // same as above
在这种情况下不是特别有用,但它需要用于函数调用:
void foo(int const& i) { ... }
...
foo(100);