博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
条款3:尽可能的使用const
阅读量:5843 次
发布时间:2019-06-18

本文共 1396 字,大约阅读时间需要 4 分钟。

const成员函数的一般好处有:

  • 它使得class接口比较容易理解。
  • 它使得操纵const对象成为可能。

使用的过程中应该在const与non const成员函数之间避免代码重复:

class TextBlock{     public:     ...     const char & operator[](std::size_t position)const     {          ...          //边界检查          ...          //日志数据访问          ...          //校验数据完整性          return text[position];     }     char & operator[](std::size_t position)     {          ...          //边界检查          ...          //日志数据访问          ...          //校验数据完整性          return text[position];     }     private:     std::string text;}
这样做可以但是会导致你代码较为臃肿,做了很多的重复性的工作,事实上可以使用const——cast以及static_cast来实现如下的工作
这个就叫做所谓的常量性的转除,用一个operator[]去掉用另外一个operator[]
一般来说,用non-const来调用其const兄弟一般是一种安全的做法:
const char & operator[](std::size_t position)const{          ...          //边界检查          ...          //日志数据访问          ...          //校验数据完整性          return text[position]; }      char &operator[]{std:size_t position}{     return const_cast
( static_cast
(*this) [position] );}

  上面这一段可以做一些解释,第二个non-const语句块我们打算让non-const operator调用他的const兄弟,但是non-const操作符的后面如果只是单纯的调用operator[]那么会

  导致iwuxian递归的调用自己,所以应该加上static_cast来将*this先进行转型。所以这里总共是有两次的转型。第一次是将*this从Textblocks转型到const Textblocks,就是为*this
来添加上const,之后再为返回的const operator[]中将const来移除。

  还有一点应该注意的是,绝对不要用const版本来调用non-const版本。

转载于:https://www.cnblogs.com/-wang-cheng/p/4854891.html

你可能感兴趣的文章
nginx安装及负载均衡配置
查看>>
JQuery this和$(this)的区别及获取$(this)子元素对象的方法
查看>>
tomcat不能多次startup.sh,异常时直接,分析logs目录下的日志。
查看>>
关于分区索引与全局索引性能比较的示例
查看>>
ASP.NET MVC学习之(5):Html.ActionLink
查看>>
yii_wiki_145_yii-cjuidialog-for-create-new-model (通过CJuiDialog来创建新的Model)
查看>>
431.chapter2.configure database mail
查看>>
同一页面中引入多个JS库产生的冲突解决方案(转)
查看>>
C语言之指针与数组总结
查看>>
沟通:用故事产生共鸣
查看>>
1080*1920 下看网站很爽
查看>>
topcoder srm 305 div1
查看>>
[转]ORACLE 异常错误处理
查看>>
Object.observe将不加入到ES7
查看>>
Android类参考---Fragment(一)
查看>>
Windows WMIC命令使用详解(附实例)
查看>>
CMake 构建项目Android NDK项目基础知识
查看>>
请求与响应
查看>>
sql server(常用)
查看>>
算法 - 最好、最坏、平均复杂度
查看>>