我们可以通过将指向该对象的 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*
这样的类型吗?这样做时我可以依靠什么?