1

我理解参考变量的概念。它是另一个变量的别名。

int varA = 100;
int &varB = varA;  

varB是一个引用varA,都指向相同的内存位置。一个变量的变化反映在另一个变量上。

问题:

  1. a)int &c = 100;
    上述陈述的含义是什么,它与以下陈述有何不同?
    b)int c = 100;

  2. 有没有我们需要使用 1(a) 而不是 1(b) 的场景?

4

4 回答 4

3

一切都是正确的,除了这个:

int &c = 100; //error

它会在 C++03 和 C++11 中给出编译错误。这是因为它试图将非常量引用100绑定到一个不允许的临时对象(从 中创建)。

但是,在 C++11 中,您可以这样做:

int && c = 100; //ok

它被称为右值引用。

您可以将const 引用绑定到一个临时对象(在 C++03 和 C++11 中):

int const & c = 100;

-

int c = 100;

它只是定义了一个名为的对象c并用100. 这里没有参考。

于 2012-06-26T07:19:09.120 回答
3
 int &c = 100

是无效代码,您不能将非常量引用绑定到临时。

为了使其有效,您需要一个const参考:

 const int &c = 100;

尽管,

int c = 100

是一个有效的代码。它创建一个以c该类型命名的变量int并用100.

于 2012-06-26T07:19:15.103 回答
2

1)int& c = 100;是非法的,而第二个不是。

我理解了参考变量的概念。

如果您真的了解引用,您是否期望在您执行c = 101常量之后100突然变成101

2) 回答没有意义,因为 1) 是非法的。

于 2012-06-26T07:19:01.817 回答
2
int& i = 100;

是非法的。

合法地说:

int const& i = 100;
const int& i = 100; // same as above

Not particularly useful in this context, but it needs to work for the purposes of function calls:

    void foo(int const& i) { ... }
...
    foo(100);
于 2012-06-26T07:24:11.453 回答