社区
C语言
帖子详情
如何重载operator[]?要能读能写
nilm
2002-07-04 12:58:45
这种效果:
a[key]=value;
和
var=a[key];
...全文
54
6
打赏
收藏
如何重载operator[]?要能读能写
这种效果: a[key]=value; 和 var=a[key];
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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++大学教程,有讲解.
重载
operator
new与
operator
delete构建内存池
为什么有必要写自己的
operator
new和
operator
delete? 答案通常是:为了效率。缺省的
operator
new和
operator
delete具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。尤其在...
运算符
重载
(
operator
overloading)
运算符
重载
(
operator
overloading)只是一种语法上的方便,也就说他只是另一种函数的调用方式。 在C++中,可以定义一个处理类的新运算符。这种定义很像一个普通函数的定义,只是函数的名字由关键字
operator
及其后紧跟...
C++运算符
重载
(
Operator
Overloading)
在 C++ 中,运算符
重载
(
Operator
Overloading)是一种特殊的函数
重载
机制,允许我们重新定义已有的运算符的行为。通过运算符
重载
,我们可以定义自定义类型的对象在使用运算符时的行为,使其能够执行类似于内置类型...
C++的三种new简介及
重载
局部(类内部)与全局
operator
new
先简单解释下C++的三种new,由于它们的...2、
operator
new,是一个函数,所以也是三种new唯一一个可以
重载
的。它类似C语言中的malloc,用于分配内存。3、placement new,用于初始化对象(如果有的话,就是它调用构造...
C#中关于
重载
(overload)介绍(想了解的这儿都有)
重载
的含义是什么?
重载
有哪些?
重载
方法,
重载
函数该怎么写?
重载
的特点是什么?
重载
的作用是什么? 使用
重载
时应该注意什么?
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章