C++ 搜索 Record和Key的比较

刚刚编译了一下,成员函数操作没有问题,这里主要记一下Record和Key的比较知名实现。

老师给的PPT有两种实现方式

1.用operator T()隐式转换将Record转为Key

class Record{
public:
	operator Key( ); // Record to Key 的隐式转换 .
	Record(int x=0, int y=0);
private:
	int key;
	int other;
};

Record::operator Key( ){
	Key tmp(key);
    return tmp;
}

这里的T是要转换的类型,在我们的例子中就是Key,将Record转换为Key类型。

实现函数中的tmp是一个Key类型的值,初始化tmp.key为record.key中的值,然后返回这个Key类型的变量,就将Record转化成Key了。

2.利用Key的拷贝构造函数

class Key {
	int key;
public:
	Key (int x = 0);
	Key (const Record &r);
	int the_key( ) const;
};

bool operator == (const Key &x, const Key &y);

Key::Key(const Record &r){
	key=r.the_key();
}

class Record{
public:
	Record(int x=0, int y=0);
	int the_key() const;
private:
	int key;
	int other;
};

int Record::the_key() const{
	return key;
}

说实话这个方法看上去有点绕口令惹。

核心是在调用Key(const Record &r)临时构造一个Key tmp,其中tmp.key = r.key,然后用 == 比较再调用Key类的析构函数释放tmp。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值