提问者:小点点

C++-const成员函数,只能在lvalue实例上调用,使用ref-qualifier


我试图强制一个类的const'getter'方法,通过一个ref限定符只在类的lvalue实例上调用,但由于某种原因,得到了一个意外的结果(我在Windows上通过C++1Z标志,使用支持C++17的clang 6.0.1进行编译):

声明bool getVal()const还允许在rvalue引用上调用该方法。

声明bool getVal()&不允许在rvalue引用上调用该方法,但是,正如我所理解的那样--该函数不再是常量方法,从设计角度来说,对于“getter”方法来说,这是有问题的。

获取方法的两个特性的正确方法是什么?


共1个答案

匿名用户

使用bool getVal()const&;;,但为rvalues添加已删除的重载:

bool getVal() const && = delete;

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++-const|成员|函数|能在|lvalue|实例|调用|ref-qualifier)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?