【Cherno的C++视频】Type punning in C++

#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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值