可以在C++中用void指针存储类对象的地址
Can void pointer store the address of class object in C++?
我是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;
相关文章:
- 如何使用 stl 容器有效地存储对象?(即根据其字段的值进行搜索)
- 线程上下文上的静态存储对象优化
- OOP - 存储对象和服务接口
- 为什么存储对象地址在缓冲区中会导致内存泄漏并删除它们
- 是否保证在销毁所有线程本地存储对象后销毁全局对象
- 使用列表存储对象
- 在c++中存储一个对象或不存储对象的首选方式是什么
- 更好的是:存储对象与存储指针
- 应用程序使用QMAP存储对象时停止响应
- 使用堆栈存储对象
- 如何在 std::map 中存储"对象类型"?
- 我应该如何存储对象
- 在 c++ 中存储对象的最佳策略是什么,确保名称唯一并能够在以后有效地检索它们
- 用于存储对象列表的最佳标准类
- 在C++中存储对象地址的数据结构
- 函子如何维护/存储对象的状态
- 我如何定义一个向量,并用C++在其中存储对象
- 存储对象以备将来使用(在重新启动程序时)
- C++/JNI-存储对象(jobject)在向量和数组中发生意外更改,C++或JNI问题
- 在多个容器中存储对象的最佳实践