2

在某些地方我见过这样声明的变量

const int &var1;
extern int & var2;

这些变量在其他地方定义。我一直认为,当您声明对变量的引用时,您会将对该变量的引用绑定到同一个位置。我在这里遗漏了一些东西。此外,当没有限定符(例如 const 或 extern)时,我还没有看到如上声明的引用。

4

3 回答 3

6
const int &var1;

如果不是 aclass或 a 的一部分,这是非法的struct。如果是,则必须在构造函数初始化器列表中对其进行初始化。

它合法的原因是因为该变量在创建该类的对象之前不存在。所以没有无限的参考,因为没有参考可言。

于 2012-05-29T08:38:48.207 回答
2

变量的实际声明,无论是引用、指针还是普通变量,都与变量的类型无关。

即使在您的示例中您引用了变量,这也意味着与它们的初始化位置无关。拥有一个引用很有用,因为您从另一个变量中分配它,并且您实际上可以将它们用作指针,而无需关心取消引用它,仅此而已,它与其他任何变量一样是一个变量。

于 2012-05-29T08:37:15.860 回答
2
int main()
{
    const int &var1;   
}

prog.cpp:在函数'int main()'中:

prog.cpp:4:错误:“var1”声明为引用但未初始化

prog.cpp:6:错误:分配只读引用“var1”</p>

编辑:正如其他人所说,它可以成为构造函数的一部分class并在构造函数中初始化

于 2012-05-29T08:39:41.897 回答