#include<iostream>usingnamespacestd;classArray{public:Array(intsize):m_data(newint[size]),m_size(size){}~Array(void){delete[]m_data;m_data=NULL;}int&operator[](inti){//常版本returnm_data[i];}int&operator[](inti)const{//非常版本returnconst_cast<Array&>(*this)[i];//复用非常版本}private:int*m_data;//一个数组主要包括,数组的首部元素地址和数组的元素个数intm_size;};intmain(void){Arraya(10);a[0]=1;a[1]=2;a[2]=3;for(inti=0;i<10;++i){cout<<a[i]<<endl;}//1230000000//注意:int*p=newint[10];初始化元素都为0return0;}

常对象只能调常版本,非常对象既能调非常版本,也能调常版本.