C++学习笔记41——重载操作符之下标操作符
来源:互联网 发布:淘宝客教学视频 编辑:程序博客网 时间:2024/06/05 00:47
1,概述
(1)下标操作符operator[]必须定义为类的成员函数;
(2)下标操作符用在赋值操作符左右两边时,均应表现正常。故其应返回引用。
(3)一般应该定义const与非const两个版本,一个为非const成员,返回引用,另一个为const成员,返回const引用。
补充:
(1)可以基于输入参数是否为const而重载函数,
(2)const成员函数的隐藏输入参数this指针为const,普通成员函数的this非const,所以也可以基于成员函数是否为const而重载函数。
(3)const对象只能调用const成员函数,非const对象既能调用const成员函数也能调用非const成员函数,因为非const类型可以转化为const类型,但const类型不能转化为非const类型。
(4)在存在基于const的重载时,非const对象优先调用非const成员函数,因为不用做类型转化,为精确匹配。
2,示例
/*******************************************************************/// 重载下标操作符/*******************************************************************/// 类的定义class Foo2{public:Foo2(vector<int> ivec) :data(ivec) {};int& operator[](const size_t index);const int& operator[](const size_t index) const;//3个constprivate:vector<int> data;};//成员函数的定义int& Foo2::operator[](const size_t index){cout << "call non_const []" << endl;return data[index];}const int& Foo2::operator[](const size_t index) const{cout << "call const []" << endl;return data[index];}//主函数int main(){vector<int> ivec = {1,2,3,4,5};Foo2 obj(ivec);const Foo2 con_obj(ivec);cout << obj[2] << endl;cout << con_obj[2] << endl;system("pause");return 0;}输出结果:
0 0
- C++学习笔记41——重载操作符之下标操作符
- 重载下标操作符 []
- 操作符重载——C/C++学习笔记
- C++ 重载下标操作符
- C++学习笔记之操作符重载
- C++之操作符重载学习笔记
- C++之操作符重载学习笔记
- C++学习笔记42——重载操作符之箭头操作符
- 重载数组下标操作符,使用operator
- 重载数组下标操作符,使用operator
- (C/C++学习笔记操作符重载入门)
- C++学习笔记39——重载输入输出操作符
- kotlin学习笔记——重载操作符
- C++学习笔记40——重载作符之算术操作符与关系操作符
- C++之操作符重载和友元学习笔记
- C++——操作符重载
- C++——操作符重载
- C++【操作符重载】
- zmq中zmq_poll()函数介绍
- Codeforces Round #334 (Div. 2) B. More Cowbell
- spi子系统 赏析
- [python语法巩固][leetcode326][Power of Three]
- Linux系统中System.map的解析
- C++学习笔记41——重载操作符之下标操作符
- Codeforces Round #334 (Div. 2) C. Alternative Thinking
- Algorithm Intro - Count Sort
- HDOJ 1290 献给杭电五十周年校庆的礼物 (数学—平面分割空间)
- struts2 基于XML配置方式实现校验(指定方法)
- 反射之获取父类
- 概率、随机数、随机数生成函数(面试题)
- HDU 1254:推箱子【DFS && BFS】
- 人见人爱A+B(2)