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

时间:2018-09-27 04:03:38

标签: c++ memory

我想知道是否可以通过将指针分配给变量然后修改指针以修改受保护的变量来避免类中的安全变量。这完全只是一个想法,但是我最近一直在学习指针,但我对它的了解还不够。

1 个答案:

答案 0 :(得分:1)

我不太了解您的想法,但是我认为您提到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;
}