C++ 将常量变量声明为引用

C++ 将常量变量声明为引用,c++,reference,declaration,C++,Reference,Declaration,在某些地方,我见过这样声明的变量 const int &var1; extern int & var2; 这些变量是在其他地方定义的。我一直认为,当您声明一个变量的引用时,您将该变量的引用绑定在同一个位置。我错过了一些东西。此外,我还没有看到在没有限定符(例如const或extern)的情况下如上所述声明的引用 变量的实际声明,不管是引用、指针还是普通变量,都与变量的类型无关 即使在您的示例中有对变量的引用,这也意味着与它们的初始化位置无关。拥有一个引用是很有用的,因为您可以从

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

const int &var1;
extern int & var2;

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

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

即使在您的示例中有对变量的引用,这也意味着与它们的初始化位置无关。拥有一个引用是很有用的,因为您可以从另一个变量分配它,并且实际上可以将它们用作指针,而无需考虑取消引用,但除此之外,它是一个与其他变量类似的变量

const int &var1;
如果不是
结构
的一部分,则此操作是非法的。如果是,则必须在构造函数初始值设定项列表中初始化它

它合法的原因是,在创建该类的对象之前,该变量不存在。所以这里没有未绑定的引用,因为这里没有引用

int main()
{
    const int &var1;   
}
prog.cpp:在函数“int main()”中:

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

程序cpp:6:错误:分配只读引用“var1”


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

这些是全局变量、局部变量(在函数中)还是类成员变量?将类成员变量作为引用,并在构造函数初始值设定项列表中初始化它们是很常见的。这些是类成员变量。这种款式有什么特别的优点吗?是否可以像这样声明所有类成员变量,或者有任何限制?除非您不能默认初始化引用或分配给它。因此,如果它们是数据成员,则在初始化它们的位置上有一些限制。“变量的实际声明,让它成为引用、指针或普通变量,与变量的类型无关。”-除了声明指定类型之外。当然,引用必须初始化,因为这是一个参考资料。我的意思是,引用初始化的限制与声明的范围无关。引用必须在与声明相关的上下文中实际执行的代码块中初始化,例如构造函数。@LuchianGrigore:我的意思是声明只是一个声明,如果引用变量在随后执行的上下文中初始化,则与在何处执行引用变量声明相关的任何特殊情况都不适用。