是否可以使用指针访问变量以避免直接编辑变量?

Can you access a variable using a pointer to avoid direct editing of a variable?

本文关键字:变量 编辑 可以使 指针 访问 是否      更新时间:2023-10-16

我想知道您是否可以通过分配指向变量的指针然后修改指针来修改受保护的变量来避免类中的安全变量。这完全只是一个想法,但我最近一直在学习指针,我不知道足够弄清楚。

我真的不明白你的想法,但我想你提到privateprotected变量并使用指针来更改它们的值。如果你的问题是一样的,那么我的回答是"如果你真的想改变私有变量,那么你可以使用指针。为了避免这种情况,除了小心使用指针之外别无他法"。下面是一个使用指针显示更改private variables的程序。

#include <iostream>
using namespace std;
class Demo
{
private:
int private_var_1;
int private_var_2;
public:
Demo()
{
private_var_1 = 1;
private_var_2 = 2;
}
void show()
{
cout<<private_var_1<<" "<<private_var_2<<" ";
}
}; 
int main() {
Demo d;
//now d.private_var_1 = 1 and d.private_var_2 = 2
//BUT we can completely modify d.private_var_1 and d.private_var_2
int* pointer = (int*)&d;
*pointer = 111111;  //then d.private_var_1 = 111111 
pointer += 1;       //move the pointer to next 4 bytes, now
//the pointer point to d.private_var_2
*pointer = 222222;  //then d.private_var_2 = 222222;
d.show();
return 0;
}