c – Const和Non-Const运算符重载
发布时间:2020-12-16 03:24:57 所属栏目:百科 来源:网络整理
导读:我有一个话题我很困惑,我需要一些细节.它是一个const版本和非const版本的操作符重载. // non-constdouble operator[](int idx) { if (idx length idx = 0) { return data[idx]; } throw BoundsError();} 我明白这个类的这个功能部分,使用索引并检查其逻辑,返
我有一个话题我很困惑,我需要一些细节.它是一个const版本和非const版本的操作符重载.
// non-const double &operator[](int idx) { if (idx < length && idx >= 0) { return data[idx]; } throw BoundsError(); } 我明白这个类的这个功能部分,使用索引并检查其逻辑,返回类中数组数据的索引.还有一个功能与同一个机构,但与函数调用 const double &operator[](int idx) const 为什么我们需要两个版本? 此示例问题也可能有助于详细说明. Array a(3); a[0] = 2.0; a[1] = 3.3; a[2] = a[0] + a[1]; 我假设const版本只是在[2]上调用,因为我们不想冒险修改[0]或[1]. 感谢任何帮助. 解决方法
当两个版本都可用时,逻辑非常简单:对const对象调用const版本,对非const对象调用非const版本.就这样.
在代码示例中,a是一个非const对象,这意味着在所有情况下调用非const版本.在您的示例中,const版本从不调用. 有两个版本的要点是为非const对象实现“读/写”访问,只对const对象进行“读取”访问.对于const对象,const版本的operator []被调用,它返回一个const double&参考.您可以通过该const引用读取数据,但是您无法通过它编写. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sqlite3 查找 所有表名字
- SAX解析百度车联网天气查询得到的xml数据
- ruby-on-rails – CanCan – “user”参数为nil – Rails 4
- ruby-on-rails – puma master进程如何将请求转移给工人?
- ruby-on-rails – 自定义JSON的输出
- ruby-on-rails-3 – 活动管理员Authlogic集成 – Rails 3.2
- OpenOffice xml文件格式协议参考资料
- c# – 正确使用(或不使用)Dispatcher.CheckAccess()
- ruby – 我可以使用gollum创建一个不是由Github托管的wiki吗
- Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(三)