C++ 对 const 的引用与文字初始化

标签 c++

我正在更深入地研究 C++,并努力解决对用文字初始化的 const 的引用。例如

const int &r {100};

它确实有效,但我想知道编译器对这种定义做了什么。是否在内存中创建了一个真实的对象,其值为 100?还是在编译期间,代码中每次出现的 r 都简单地替换为 100?这是我的猜测,因为初始化值在运行时既不能更改也不能引用,所以为什么要将它保存在内存中?

最佳答案

这里:

const int &r {100};

正在创建一个临时的 int,稍后绑定(bind)到 r。对 const 的引用将延长与其绑定(bind)的临时对象的生命周期。

这在以下情况下更有用:

void foo (const std::string& s) {}    
foo("test"); // here temporary std::string is created and later on bound to `s`

关于C++ 对 const 的引用与文字初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40432638/

相关文章:

c++将对象存储到该对象的构造函数中的对象数组中

c++ - 静态常量变量在子类中不是常量

c++ - 如何迭代每个对象并从 C++ 中的自定义类数组访问其成员函数?

c++ - C++ 错误处理的正确方法是什么

c# - 导致 AccessViolationException 的非托管 DLL

c++ - 如何将 QMainWindow 设置为模式窗口?

c++ - OPENGL 如何正确渲染这两个具有不同纹理/贴图的对象?

C++:二维数组与一维数组的差异

c++ - 如何查看链接库中函数背后的代码,例如打开简历

c++ - 分隔二进制数的数字?