C++中的Sizeof以及如何计算指针长度?

Mem*_*eak 0 c++ pointers sizeof

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

// 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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

sizeof(working_addr)等于什么?

cod*_*nix 5

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

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