gpt4 book ai didi

c++ - 什么时候可以直接访问内存中的对象成员?没有调用 getter

转载 作者:太空狗 更新时间:2023-10-29 23:47:22 26 4
gpt4 key购买 nike

通常允许这样做(请不要对代码发表评论:-))

class SimpleClass {
int member;
};

SimpleClass instance;
int* pointer = (int*) &instance;

但是,如果我将我的类定义为:

class SimpleClass {
virtual void foo();
int member;
};

我不能再这样了。好吧,我想我当然可以;它只是更复杂。

所以我想知道:它是在某处指定的,还是知道我何时可以这样做的唯一方法就是使用一些常识?不包括通常可以解决的对齐问题

最佳答案

通常,您希望尽可能地使类的内部结构与外界隔绝,但如果您确实需要直接访问成员,只需将其指定为公共(public)成员并直接获取指向它的指针即可。

class SimpleClass {
public:
int member;
};

SimpleClass instance;
int* pointer = &instance.member;

我会避免以您描述的方式访问成员,因为正如您所指出的,类中的小改动可能会把它搞砸,这在您编写代码时可能没问题,但是当您稍后再回来使用它时,您可能会忽略这些微妙之处。此外,除非该类完全由 native 数据类型构造,否则我相信编译器的实现也会影响所需的偏移量。

关于c++ - 什么时候可以直接访问内存中的对象成员?没有调用 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927586/

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