有人可以为我解释以下代码段吗?

// Bind base object so we can compute offsets
// currently only implemented for indexes.
template<class DataObj> void BindAsBase(DataObj &rowbuf)
{
    // Attempting to assign working_type first guarantees exception safety.
    working_type = DTL_TYPEID_NAME (rowbuf);
    working_addr = reinterpret_cast<BYTE*>(&rowbuf);
    working_size = sizeof(rowbuf);
}


我的问题是sizeof(rowbuf)的结果是什么?是DataObj的长度还是Byte *的长度?为什么?

另一个问题:为什么需要计算指针的偏移量?它的通常用途是什么?

sizeof(working_addr)等于多少?

最佳答案

sizeof(rowbuf)返回DataObj类型的对象的长度(以字节为单位)。
请注意,rowbuf不是指针,但它是一个引用,有很大的不同。

如果要计算y DataObj指针的大小,请使用sizeof(&rowbuf)或sizeof(DataObj *)。

10-06 15:24