Я хочу переписать этот маленький класс, чтобы он функционировал, но не могу понять его логику.
Этот код:
class TE32ImageUids
{
public:
TE32ImageUids(uint32_t aUid1, uint32_t aUid2, uint32_t aUid3);
uint32_t Check();
private:
uint32_t iUids[KMaxCheckedUid] = {0};
uint32_t iCheck=0;
};
TE32ImageUids::TE32ImageUids(uint32_t aUid1, uint32_t aUid2, uint32_t aUid3)
{
iUids[0]=aUid1;
iUids[1]=aUid2;
iUids[2]=aUid3;
}
uint32_t TE32ImageUids::Check()
{
return ((checkSum(((uint8_t*)this)+1)<<16)|checkSum(this));
}
Я хочу переписать как функцию:
uint32_t GetUidChecksum(uint32_t aUid1, uint32_t aUid2, uint32_t aUid3)
{
return checksum;
}
но подумайте, не понимаете, что произошло в return ((checkSum(((uint8_t*)this)+1)<<16)|checkSum(this));
(uint8_t*)this
, трактует *this
как массив символов.((uint8_t*)this)+1)
выглядит как второй элемент в этом массиве.Но что удерживает * это?Данные участники в первую очередь?Может быть, указатели на функции?