C/C++:通过指针访问数据成员

本文介绍了一种在C++中通过指针访问类的私有成员的方法,尽管这种做法破坏了封装性和安全性,但了解其原理有助于深入理解C++内存布局。通过实例演示了如何利用类型转换和偏移量访问私有数据成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、通过指针访问数据成员

// 该类只有 私有数据成员

class Stu {
private:
	int a;
	char c;
public:
	Stu(int a, char c) : a(a), c(c) {
		//this->a = a;
		//this->c = c;        
	}
};

// 通过指针 访问 私有数据成员

int main() {
	
	Stu st(10, 'a');
	
	int *pa = (int *)&st;           // 访问 a, 强转
	char *pc = (char *)(pa+1);      // 访问 c, 偏移+强转
	
	cout << *pa << endl;            // 输出 a
	cout << *pc << endl;            // 输出 c
	
	getchar();
	return 0;
}

       该类只有私有成员变量,且内部没有公有成员函数,因此对象无法直接访问内部私有成员,但是可以通过特殊的方法,即指针来访问。

       通过以上例子可以看出,如果知道了类的内部结构,通过指针能够很容易访问到对象的内部成员,对于安全性来讲,指针是个极大隐患。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值