2 qyy2014 QYY2014 于 2016.03.05 22:43 提问

关于C++中运算符重载的问题

template
HashTable&HashTable::Insert(const E&e)
{
//散列表插入
K k=e; //抽取key值
int b=hSearch(k);
//检查是否能完成插入
if(empty[b])
{
empty[b]=false;
ht[b]=e;
return *this;
}

散列表中的插入操作,要往Insert()中传的e是string类型的,然后下面的K k=e中的K是int,想要把“=”重载,使得得到的k值等于根据f(e)得到的一个int值。
f(e)=string的第一个字符序号*100+string的最后一个字符序号
这个“=”重载应该怎么写?

1个回答

baijiaheizhiganmao
baijiaheizhiganmao   2016.03.05 23:05

我理解你的题意是:k是一个int类型,希望重载一个int类型中已有的“=”操作符,使得该操作符可以等价于:f(e)=序列号+序列号。
假如我的理解无误的话,很抱歉这是无法成功的,因为你不能破坏了基本操作类型中的规则。如果你希望完成你的操作,那么K就不能是一个int类型,而是一个自定义的类型
即:一个类,然后这个类重载了operator=。(你这里的K应该使用#define int K 这种方式定义的吧)。



baijiaheizhiganmao
baijiaheizhiganmao 回复QYY2014: 那你别用重载,写一个f(string)函数实现这个功能不就好了
接近 2 年之前 回复
QYY2014
QYY2014 是希望K k=f(e)
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!