最近我正在阅读 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/