C++:非临时 const 引用

标签 c++ reference constants temporary

我需要编写一个类,其构造函数采用对对象的常量引用并将其存储在本地。

为了避免我能预见的最常见错误,我只想接受对非临时性的引用(即:对左值的引用)。

我怎样才能编写一个函数,它只接受非临时的常量引用?


当然,即使是非临时引用也可能超出范围并因此破坏我的类行为,但我相信通过禁止临时引用我将避免大多数错误。

最佳答案

如果您要存储一个引用并需要在构造函数完成后使用它,构造函数最好采用一个指针:

struct C {
    C(const X* p) : p_(p) { }

    const X* p_;
};

这样,几乎可以保证您不会有指向临时对象的指针(除非 X 做了一些非常愚蠢的事情,比如重载一元 & 以返回这个)。

如果构造函数采用指针,类的用户也更清楚他们需要注意传递给构造函数的 X 对象的生命周期。

关于C++:非临时 const 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542789/

相关文章:

c++ - 取消引用字符迭代器

Python 3.5 list comprehension 修改 original

c++ - 从初始化列表分配给数组

c++ - OpenCV 中是否有类似 MATLAB 的 'impixelinfo()' 的功能?

java - JSP 验证用户来自上一页

c - 为什么我不能在不声明像 const 这样的矩阵的情况下进行编译

C程序——关于sizeof和constant一起使用

c++ - 不是 'const' 的引用不能绑定(bind)到非左值

C++:Getline 在第一个空格处停止读取

php - 如何在 PHP 函数中创建参数引用