我们可以通过将指向该对象的 aT转换为 a来查看类型对象的表示。至少在实践中:T*char*
int x = 511;
unsigned char* cp = (unsigned char*)&x;
std::cout << std::hex << std::setfill('0');
for (int i = 0; i < sizeof(int); i++) {
std::cout << std::setw(2) << (int)cp[i] << ' ';
}
511这在我的系统上输出表示: ff 01 00 00。
这里(肯定)发生了一些实现定义的行为。哪些演员表允许我将 an 转换int*为 anunsigned char*以及该演员表需要哪些转换?我是否在施放后立即调用未定义的行为?我可以投射任何T*这样的类型吗?这样做时我可以依靠什么?