【发布时间】:2011-02-19 05:11:07
【问题描述】:
void* GetData()
{
return reinterpret_cast<unsigned char*>(this);
}
在这种情况下是否会发生自动类型强制?如何将我的类的对象转换为 unsigned char* ??
【问题讨论】:
-
这个表达式在 g++ 上编译,并以某种方式返回一个值!这段代码实际上在我的代码库中工作:)
-
谁能告诉我演员阵容比简单的
return this有什么优势?任何指针都可以隐式转换为void*(实际上该函数使用它来转换unsigned char*),因此this也可以转换。第一次投射到unsigned char*有什么意义? -
@sbi 我认为 OP 打算检查成员的类对象的字节布局,所以返回类型应该是
unsigned char*。否则,在作为void*接口时返回unsigned char*毫无意义。 -
@WilhelmTell:但是当指针被投射到
void*时,这种对齐方式就丢失了。此外,任何检查都需要再次铸造void*。我可能仍然遗漏了一些东西,但您的回答似乎无法解释演员阵容。 -
@sbi:
void *保证与unsigned char *具有相同的对齐方式;除此之外,我同意:void *的演员阵容没有意义。
标签: c++ types type-conversion