最近,我正在阅读的API,boost::optional
发现其中的内容:
T const& operator *() const& ;
T& operator *() & ;
T&& operator *() && ;
我还编写了自己的程序,该程序将成员函数定义为const&,&和&&(请注意,我并不是在讲返回类型,而是在分号之前的说明符),并且它们似乎可以正常工作。
我知道声明成员函数const的含义,但是谁能解释声明const&,&和&&的含义。
const&
意味着,此重载将仅用于const,non-const和lvalue对象。
const A a = A();
*a;
&
意味着,此重载将仅用于非const对象。
A a;
*a;
&&
意味着,此重载将仅用于右值对象。
*A();
有关C ++ 11标准此功能的更多信息,您可以阅读这篇文章什么是“ * this的右值参考”?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句