用例引用常量变量

时间:2012-06-26 07:16:51

标签: c++

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

int varA = 100;
int &varB = varA;  

此处varB指的是varA,两者都指向相同的内存位置。对一个变量的更改反映在另一个变量中。

问题:

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

  2. 我们是否需要使用1(a)而不是1(b)?

4 个答案:

答案 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);