您可以使用指针访问变量以避免直接编辑变量吗? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您可以使用指针访问变量以避免直接编辑变量吗? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我想知道你是否可以通过分配指向变量的指针然后修改指针然后修改受保护的变量来避免类中的安全变量。这完全只是一个想法,但我最近一直在学习指针,我不知道足够的数字。
答案
我真的不明白你的想法,但我想你提到private
或protected
变量并使用指针改变它们的值。如果你的问题是相同的,那么我的回答是“如果你真的想要更改私有变量,那么你可以使用指针。为了避免这种情况,除了仔细使用指针之外别无他法”。下面是一个程序,通过使用指针显示更改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;
}
以上是关于您可以使用指针访问变量以避免直接编辑变量吗? [重复]的主要内容,如果未能解决你的问题,请参考以下文章