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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【C++】运算符重载总结
运算符重载的概念和语法 重载,就是赋予新的含义,运算符重载和函数重载类似,同一个运算符可以有不同的功能。 运算符重载的方式就是定义一个函数,在函数体内实现想要的功能,当用到该运算符时,编译器就会自动调用这个函数。也就是说,运算符重载就是通过函数定义实现的,它本质上是函数重载。 返回值类型 operator 运算符名称(形参列表){ //TODO; } operator是关键字,
面试题之 C++输出类对象时导致错误的去处运算符<< 的重载
今天把去年某公司的笔试题拿出来,做了下,发现了几个问题。      改错题
C++_运算符重载的注意事项
1、重载操作符没必要一定是成员函数,还可以是友元函数。 2、重载操作符函数为成员函数主要是你需要操作类内部的成员, 必须是成员函数或友元函数才行。 3、至于由深浅拷贝的原因要使其成为成员函数,这个不知道。 4、如果运算符被重载为全局函数,那么只有一个参数的运算符叫做一元运算符,有两个参数的运算符叫做二元运算符。 如果运算符被重载为类的成员函数,那么一元运算符没有参数,二元
深入解析C++输入输出运算符重载
其实算不上什么深入解析,只不过最近看CArchive类的实现,其中一些写法完全颠覆了我对输入输出运算符重载的一些理解,所以在这里mark一下。        我们以输出运算符为例。首先输出运算符重载的一般形式是 friend ostream& operator(ostream& o,const ClassName& c);[1]         ostream是c++流输出的
C++:运算符重载
C++:运算符重载标签(空格分隔): c++ 作者:陈小默C运算符重载 运算符重载规则 自定义时间运算 重载运算符的两种使用方式 多个重载运算符的连续运算 重载限制 当我们学习C++的时候,一定接触过cout对象,你一定好奇过为什么左移运算符在这里就成了插入运算符了呢?所以这一节我们就来介绍一下吊炸天的C++运算符重载机制。运算符重载规则operatorOP(argument-list)重载运算符
优先队列运算符重载
转载以供查用:http://blog.csdn.net/liuzhanchen1987/article/details/7856893(转载自) 优先级队列区别于普通队列的一点是:优先级队列如果插入的节点是结构体类型,则要在结构体中重载比较操作符函数。 示例代码如下: //优先级队列的使用测试   //优先级队列跟对列的使用方式的区别是优先级队列在插入元素时   //在将元素插入队尾
c++运算符重载练习
//全局函数和静态函数的转换 #include using namespace std; class Test { public: Test(int a = 0, int b = 0) { this->a = a; this->b = b; } public: int a; int b; public: //全局函数 Test T_add(Test &t1, Test &
c++运算符重载字符串想加
阿斯达所多 #include using namespace std; class C { private: string s; public: C(){} C(string a) { s=a; } C operator+(C &b) { C c; c.s=s+b.s; return c; } void show() {
C/C++运算符重载实现字符串相加
#include<iostream> #include<string.h> using namespace std; class String { public: String() { p=NULL; } String(char *str); friend String operator + (Stri
C语言之重载运算符()/[]/++/->等运算符
C语言之重载运算符()/[]/++/->等预算符文章链接:知识点 重载()运算符; 重载[]运算符; 重载++和->运算符; 新名词记录{operator} 概述operator操作符一文包括两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。这是C++和pascal扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要