c++ - c++ - const 成员 func,只能在左值实例上调用,使用 ref 限定符
问题描述
我试图通过引用限定符强制类的 const 'getter' 方法仅在类的左值实例上调用,并且由于某种原因得到意外结果(我正在使用clang 6.0.1编译C++ 17支持,通过c++1z标志,在Windows上):
该声明还允许在右值引用bool getVal() const &;
上调用该方法。
该声明bool getVal() &;
不允许在右值引用上调用该方法,但是据我了解-该函数不再是 const 方法,这对于“getter”方法在设计上是有问题的。
获得方法的两个特征的正确方法是什么?
解决方案
使用bool getVal() const &;
,但为右值添加已删除的重载:
bool getVal() const && = delete;
推荐阅读
- analytics - Cognos 分析单个单元中的多个度量
- node.js - 每天自动更新数据库的最佳实践?
- json - Flutter Dart“期望一个标识符”和“期望找到')'”
- javascript - 使用 jquery 选择自定义 DOM
- python - 使用python CDLL加载dll,但没有显示c代码中的函数
- java - 从地图
> 从集合中收集值 钥匙 - django - 如何将值从视图传递到不可编辑的字段django python
- javascript - 回调函数如何与设置超时函数一起工作?
- javascript - 为什么数组的排序在 reactjs 中不起作用,即使它已经从后端排序?
- python - 从文档创建 LDA 模型后,如何分配主题?