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。

你可能感兴趣的:(C++)