C++通过指针修改对象的私有成员

先上代码

#include <iostream>
using namespace std;

class test1
{
private:
	int val;
public:
	int * changeTest(void)
	{
		return &val;
	}
	void showVal(void)
	{
		cout << val << endl;
	}
};
int main()
{
	test1 t;
	int *p = t.changeTest();
	*p = 10;
	t.showVal();
	system("pause");
	return 0;
}

首先定义了一个类test1,该类包括一个私有属性val以及两个方法。
changeTest()方法用于返回私有属性val的地址。
showVal()方法用于向屏幕输出val属性的值。

主函数中实例化了一个对象 t ,调用changeTest()方法方法返回val的地址,然后为其赋值10。使用showVal()方法打印val的值。

最后输出结果为如下
在这里插入图片描述
C++程序员,除非在不得已的情况下,否则应该尽量减少指针的使用。
首先,使用指针就可能会涉及到内存的管理和释放,容易造成内存泄露或者产生非法内存的指针。
其次,标准库更加方便安全。
最后,指针可能会改变类的安全性。在此例中,封装为私有属性就是为了防止外部修改,但通过指针还是可以修改,这是不安全的。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值