Object

构造函数

1
object_all = 0; 

置0,创建一个新对象

GetId()

先通过 object_all & 0xff00000000000000获取前八位的二进制码,其他位清零,然后再右移56位,即64-56=8.所获取的tmp即代表着物品的id.

SetId()

先通过object_all = object_all & 0x00ffffffffffffff将原来的object其他位保留,只消除原来的id位。

ulonglong(x) << 56其中x为输入,左移56位,获得 0x_ _00000000000000的形式。

最后,通过 object_all = object_all | (ulonglong(x) << 56)将x的id位和原object的其他位保留,即完成了物品id的修改(设置)

其他属性的get和set

同理上面id的设置:

get都是先按位运算,获取该属性的某一段二进制编码,再右移指定位数,获取属性的二进制码。

set都是先消除原来的属性位的二进制码,然后再将新的输入转换为64位形式,与原来的object按位运算,结合了属性位和其他位,完成了属性的设置。

Clear()

1
object_all = 0; 	

与构造函数一样,都是置0,清除。

重载

1
Object::operator<(const Object &x) const

比较符重载,便于后面比较物品的优先级。

1
std::ostream & operator<< (std::ostream &os, const Object &obj)

输出符<<重载,便于后面直接打印物品的所有属性,而不需要一个个单独调用get函数。