void指针可以在C++中存储class对象的地址吗?
Can void pointer store the address of class object in C++?
我是 C++ 的新手,请告诉我是否可以在 void 指针中存储 class 地址?
没有。 C++ classes 是类型,不是对象。它们在内存中没有任何位置。
(class 中的函数,可能还有 class 的 vtable,确实存在于内存中,但没有一个位置被视为代表 class。)
是的,很简单。
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;
我是 C++ 的新手,请告诉我是否可以在 void 指针中存储 class 地址?
没有。 C++ classes 是类型,不是对象。它们在内存中没有任何位置。
(class 中的函数,可能还有 class 的 vtable,确实存在于内存中,但没有一个位置被视为代表 class。)
是的,很简单。
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;