是否可以使用指针访问变量以避免直接编辑变量?
Can you access a variable using a pointer to avoid direct editing of a variable?
我想知道您是否可以通过分配指向变量的指针然后修改指针来修改受保护的变量来避免类中的安全变量。这完全只是一个想法,但我最近一直在学习指针,我不知道足够弄清楚。
我真的不明白你的想法,但我想你提到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;
}
相关文章:
- 编辑字符串以包含括号 c++ 之间的变量
- 是否可以使用指针访问变量以避免直接编辑变量?
- 如何编辑变量内的半字节?
- 编辑从父类继承的变量
- 我不允许更改变量的声明,我可以编辑哪些其他方法
- 尝试为所有子类 B 编辑父类 A 类的静态变量
- 如何编辑结构数组中的变量
- 为英特尔C++编辑器"GCC not found"设置环境变量时出现问题
- 如何通过其他.cpp文件中的类变量编辑公共成员变量
- 无法编辑外部变量
- 编辑全局变量时减少重新编译
- 如何定义全局变量,以便所有类都可以访问/编辑它们
- 哪些 IDE 和文本编辑器可以推断出在 C++11 中使用 auto 关键字声明的变量类型
- 在变量上显示默认文本,用户可以在C++命令行程序上编辑这些变量
- 如何从Mat变量编辑/读取OpenCv中的像素值
- 一种单一的数据结构,用于从脚本中读取任意类型的变量,以便在运行时进行检索和编辑
- 无法通过 get 方法编辑私有变量(必须是可修改的左值)
- 如何将编辑框中键入的值赋给MFC中的变量
- 如何使变量在声明时对其值进行预编辑?
- 将特定变量传递给函数,然后编辑该变量的值