码迷,mamicode.com
首页 > 其他好文 > 详细

类定义下标操作符时,为什么需要定义两个版本

时间:2014-11-02 20:58:05      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:style   color   sp   strong   on   ef   方法   对象   c   

类定义下标操作符时,一般需要定义两个版本

1. 作为类的非const成员函数,返回引用;

2. 作为类的const成员函数,返回const引用。

首先,什么是类的const成员函数,也就是不改变对象的成员函数。表示方法就是在类的成员函数的声明和定义后面加上const。

类的有些对象可能可以改变,有的不能改变,举个例子来说,对于string对象来说,有的我们可能希望定义的string对象可以改变,有的则不能改变:

string str1= "abcdefg";

const string str2 = "abcdefg";

我们如果进行下标操作符运算,str1[1]=‘d‘这是允许的,而str2[1]=‘d‘则是不允许的,这两个操作调用的成员函数也是不一样的,前一个调用的是string类的非const成员函数,后一个调用的是string类的const成员函数,如果我们没有定义const成员函数,则str2会调用相应的非const成员函数,从而导致我们本来不想其被修改的对象被意外修改。

类定义下标操作符时,为什么需要定义两个版本

标签:style   color   sp   strong   on   ef   方法   对象   c   

原文地址:http://www.cnblogs.com/hubavyn/p/4069842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!