c++ - 在适用性方面,如果 "const int &i"和 "const int i"都是用文字/表达式初始化的,它们有何不同?

标签 c++ reference initialization constants

我对 C++ 还是很陌生,但到目前为止对我来说,两者在适用性方面似乎没有区别。我知道的唯一区别是,只要用文字或表达式初始化,对 const 对象的引用就会绑定(bind)到一个临时对象。

但由于只要绑定(bind)到它的引用存在,临时变量就存在,所以如果它们都由文字/表达式初始化,那么对 const 的引用和 const 变量之间似乎没有适用的区别。

那么,在任何情况下您只能或宁愿选择一个而不是另一个吗?

最佳答案

在函数范围内,没有区别。临时绑定(bind)到引用将存在,直到函数返回。

但是,对于类成员,相关函数返回时引用仍将被销毁,相关函数是构造函数 - 而不是析构函数!构造函数进行初始化,因此临时对象仅存在于构造函数中。

如果您有一个 const int 成员,当然可以正常工作。

关于c++ - 在适用性方面,如果 "const int &i"和 "const int i"都是用文字/表达式初始化的,它们有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31528797/

相关文章:

c++ - 如何将用 C++ 编写的 Qt4 小部件实现到一些 Python 代码中?

c++ - g++,基于范围和向量化

javascript - 函数(a,b){ a = b; } 不会改变 javascript 中 a 的值

python - 从特定内存地址/对象引用读取数据

swift - 'let' 属性不能直接初始化;使用 "self.init(...)"或 "self = ..."代替

php数组初始化

c++ - 从线程安全地发出信号并将其连接到小部件

c++ - 与 MinGW (v.4.3.0) 和 libhid 的链接问题

VBA 引用库

java - 如何在 WebApp 中的处理程序上调用 init()