gpt4 book ai didi

c++ - 设置具有多个成员变量的类的私有(private)变量的方法

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:23 24 4
gpt4 key购买 nike

因为我们可以设置类的私有(private)变量,如this

我试图为以下情况设置私有(private)成员变量 int。

#include <iostream>
#include <string>

using namespace std;

class Test
{
private:
string s;
int data;
public:
Test() : s("New") , data(0) { }
int getData() { return data; }
};

int main()
{
Test t;
int* ptr = (int*)&t;
*(ptr+sizeof(string)) = 10;
cout << t.getData();
return 0;
}

但它无法打印 10。

我知道还有其他方法可以使用 setter 函数进行设置,但正在检查是否使用显示的方法进行设置 here

这纯粹是 hack,不是有效的学习方法。

最佳答案

我想这会解决问题:

char* ptr = (char*)&t;
*(int*)(ptr+sizeof(string)) = 10;

sizeof 将以字节为单位返回大小。指针增量将用于其指向的对象的大小。 char 是一个字节大小。

如果您想继续阅读:C pointer arithmetic article

只是重申一下我认为您说过的话:您只是将黑客作为一种学习点,并且您知道在现实生活中您永远不应该这样做...!!

关于c++ - 设置具有多个成员变量的类的私有(private)变量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com