《关于C++中下标运算符的应用》
2016-03-11 11:51
316 查看
《关于C++中下标运算符的应用》
在C++中,两个中括号组成一个运算符-------中括号运算符,可以使用方法operator[]()来重载该运算符中括号运算符,一个操作数位于第一个中括号的前面,另一个位于两个中括号中间。所以,在表达式city[0]中,city是第一个操作数
0是第二个操作数。
假设opera是一个String类对象
String opera("The Magic Flute");
则对于表达式opera[4],C++将查找名称和特征标与此相同的方法:
String::operator[](int i) ;
如果找到匹配的原形,编译器将使用下面的函数调用来代替表达式opera[4]:
opera.operator[](4);
opera对象调用该方法,数组下标4将成为该函数的参数
下面是该方法的简单实现
chat & String::operator[](int i)
{
return str[i];
}
有了上面定义后,语句:
cout << opera[4];
将被转换为
cout << opera.operator[](4);
返回值是opera.str[4] (即字符M) ,由此,公有方法可以访问私有数据
将返回值类型声明为char&,便可给特定元素赋值。例如
String means("might");
means[0]='r';
第二条语句将被转换为一个重载运算符函数调用:
means.operator[][0]='r';
这里将r赋给方法的返回值,而函数返回的是指向mean.str[0]的引用,因此上述代码等同于下面的代码
means.str[0]='r';
代码的最后一行访问的是私有数据,但由于operator[]()是类的一个方法,因此可以修改数组的内容
最终的结果是right
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- 关于指针的一些事情
- android上改变listView的选中颜色
- String.intern
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- PostgreSQL ERROR: invalid escape string 解决办法
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析