在某些地方,我见过像这样声明的变量
const int &var1;
extern int & var2;
这些变量在其他地方定义。我一直认为,当您声明对变量的引用时,您将在同一位置绑定对该变量的引用。我在这里遗漏了一些东西。当没有限定符(例如const或extern)时,我还没有看到如上所述的引用。
答案 0 :(得分:6)
const int &var1;
如果不属于class
或struct
,则属于非法行为。如果是,则必须在构造函数初始化列表中初始化。
它合法的原因是因为在创建该类的对象之前该变量不存在。所以没有未绑定的引用,因为没有提及。
答案 1 :(得分:2)
变量的实际声明,让它成为引用或指针或正常变量,与变量的类型无关。
即使在您的示例中您引用了变量,这也意味着它们与初始化的位置无关。有一个引用是有用的,因为你从另一个变量中分配它,你实际上可以使用它们作为一个指针,而不关心dereferincing它,但仅此而已,它是一个像任何其他变量。
答案 2 :(得分:2)
int main()
{
const int &var1;
}
prog.cpp:在函数'int main()'中:
prog.cpp:4:错误:'var1'声明为引用但未初始化
prog.cpp:6:错误:分配只读参考'var1'
编辑 :正如其他人所说,它可以是class
的一部分并在构造函数中初始化