可以在C++中用void指针存储类对象的地址

Can void pointer store the address of class object in C++?

本文关键字:存储 对象 地址 指针 void C++ 中用      更新时间:2023-10-16

我是C++新手,请告诉我是否可以将类地址存储在void指针中?

否。C++类是类型,而不是对象。它们在内存中没有任何位置。

(类中的函数,可能还有类的vtable,确实存在于内存中,但没有一个位置被视为代表该类。)

是的,非常简单。

class some_class {
public:
    int Member;
};
void Function() {
    some_class SomeObject;
    void* voidPointer = &SomeObject;
}

不过,为了使用该对象的成员,您需要将指针转换回正确的类型,这需要强制转换。

voidPointer->Member = 10;    // This line is an error
some_class* SomePointer = static_cast<some_class*>(voidPointer);
SomePointer->Member = 10;