#include <iostream>
struct Entity
{
int x, y;
int* GetPositions(){ return &x; }
};
int main(void)
{
int a = 50;
// implicit conversion.
double value0 = a;
// explicit conversion, the memory of a to be treated as a double, a bad idea actually!
double value1 = *(double*)&a;
double& value2 = *(double*)&a;
value2 = 0.0;
std::cout << "value2 = " << value2 << std::endl;
Entity e = {5, 8};
int* position0 = (int*)&e;
int* position1 = e.GetPositions();
position1[0] = 2;
std::cout << "position1 = " << position1[0] << ", " << position1[1] << std::endl;
// crazy code! just to show how c++ can manipulate memory easily and freely.
int y = *(int*)((char*)&e + 4);
std::cout << "y = " << y << std::endl;
std::cin.get();
}
【Cherno的C++视频】Type punning in C++
最新推荐文章于 2024-09-16 17:46:36 发布