如何重载operator[]?要能读能写

nilm 2002-07-04 12:58:45
这种效果:
a[key]=value;

var=a[key];
...全文
54 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudwu 2002-07-04
  • 打赏
  • 举报
回复
一般实现两个

data_type& operator[](const key_type&);
const data_type& operator[](const key_type&) const;
nilm 2002-07-04
  • 打赏
  • 举报
回复
下标换成string就不行了
fangrk 2002-07-04
  • 打赏
  • 举报
回复
//arraytemplate.h
template <class T>
class Array{
public:
Array(int);
Array(const Array&);
~Array();
T& operator[](int);
Array& operator=(const Array&);
void display();
private:
int size;
T* element;
};
template<class T>
Array<T>::Array(int a_size)
{ if(a_size<1) a_size=1;
element=new T[a_size];
size=a_size;
}
template<class T>
Array<T>::Array(const Array&rhs)
{ size=rhs.size;
element=new T[size];
for(int i=0;i<size;++i)
element[i]=rhs.element[i];
}
template<class T>
Array<T>::~Array()
{delete[]element;
}
template<class T>
T&
Array<T>::operator[] (int index)
{ if(index<0||index>=size) index=0;
return *(element+index);
}
template<class T>
Array<T>&
Array<T>::operator=(const Array&rhs)
{ if(this==&rhs) return *this;
delete[]element;
element=new T[rhs.size];
size=rhs.size;
for(int i=0;i<size;++i)
element[i]=rhs.element[i];
return *this;
}
template<class T>
void Array<T>::display()
{ for(int i=0;i<size;++i)
cout<<*(element+i)<<' ';
cout<<endl;
}

//main.cpp
#include <iostream>
using namespace std;
#include "arraytemplate.h"
int main()
{ Array<int> intArray1(5);
int i;
for(i=0;i<5;++i) intArray1[i]=i;
intArray1.display();
Array<int> intArray3(8);
for(i=0;i<8;++i) intArray3[i]=100+i;
intArray3.display();

intArray1=intArray3;
intArray1.display();

intArray3.display();
cout << "end!";
}
nilm 2002-07-04
  • 打赏
  • 举报
回复
to 楼上的
int 换成 string 就不行了
Wargod2002 2002-07-04
  • 打赏
  • 举报
回复
struct A
{
int& operator[](int i)
{
return _i;
}

int _i;
};

int main()
{
A a;
a[23] = 12;
int b = a[2];
}
LeeMaRS 2002-07-04
  • 打赏
  • 举报
回复
你可以看看C++大学教程,有讲解.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧