c++ - C++ 中成员函数的 const& 、 & 和 && 说明符

标签 c++ c++11 constants

最近我正在阅读 API of boost::optional并遇到了这些问题:

T const& operator *() const& ;
T&       operator *() & ;
T&&      operator *() && ;

我还编写了自己的程序,将成员函数定义为 const&、& 和 &&(请注意,我不是在谈论返回类型,而是在分号之前的说明符),它们似乎工作正常。

我知道将成员函数声明为 const 意味着什么,但谁能解释将其声明为 const&、& 和 && 意味着什么。

最佳答案

const& 表示此重载将仅用于 const、非常量和左值对象。

const A a = A();
*a;

& 表示,此重载将仅用于非常量对象。

A a;
*a;

&& 表示,此重载将仅用于右值对象。

*A();

有关 C++11 标准的此功能的更多信息,您可以阅读这篇文章 What is "rvalue reference for *this"?

关于c++ - C++ 中成员函数的 const& 、 & 和 && 说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39852512/

相关文章:

c# - 我没有在 DLLImport 中使用的引用中看到 DLL

C++ : "undefined reference to WeightCalc::getHeavier(int)"

c++ - 在 C++11 中更改了默认初始化的含义?

c++ - 为什么在丢弃指向该对象的指针的常量之后写入一个非常量对象而不是 UB?

c++ - 在 QLabels 上显示整数?

java - 将 VB.NET 转换为 C、C++ 或 Java

c++ - const 对象的复制构造函数

c++ - g++ 链接器找不到 const 成员函数

c++ - 在文件范围内声明互斥锁安全吗?

c++ - 带有类模板的可变参数模板的特化