返回对象的实例并通过句柄使用它
Returning an instance of an object and using it via handle
我最近一直在玩一些代码,我一直对一件事感到好奇,我不确定我是否找到了正确的答案。因此,让我们假设我已经定义了以下类。
class Thing {
public:
int m_Integer = 0;
Thing() {
std::cout << "Thing constructor has been called! Address: " << this << ".n ";
}
~Thing() noexcept {
std::cout << "Thing destructor has been called! Address: " << this << ".n";
}
static Thing CreateInstance() {
return Thing();
}
void* GetThis() {
return this;
}
};
我已经明确定义了默认的 ctor 和 dtor,以查看它们是否被调用。好的,那么,我创建了一个句柄。
void* hThing = Thing::CreateInstance().GetThis();
日志告诉我构造函数和析构函数都被调用了。这是否意味着我已经在堆栈上分配了一些内存,该内存具有类似于事物类型对象的布局,但对象本身已不复存在?
Thing::CreateInstance()
返回一个本地对象,GetThis()
后,该对象将被系统自动销毁(调用析构函数(。您得到的hThing
是意外的地址值。指向空间已被系统从堆栈中释放出来,并且可以随时修改该值。
相关文章:
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 如何获取边缘窗口句柄 (HWND)?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 c/c++ 中打开 PhysicalDrive 的句柄并写入 MBR 的 linux 等效是什么?
- 从运行服务的应用程序代码中提取窗口句柄
- 在读取文件后重置句柄
- 是否有像地图这样的C++结构,但我得到的不是值的键,而是值的句柄?
- Microsoft ODBC 无法创建有效的句柄
- 返回对象的实例并通过句柄使用它
- c++使用字符串句柄对对象进行通用存储和检索
- 我们可以从设备句柄中获取设备对象详细信息 /名称吗?
- 如何确定两个Win32 API句柄表示相同的对象
- 访问指针句柄中对象的地址
- 如何在运行时获取许多对象之一的句柄
- 从套接字对象获取fd或句柄
- ofstream-需要在close()操作后删除对象句柄
- 在哈希容器中存储持久的v8对象句柄
- 具有自动清除功能的中央注册表中对象的句柄
- 线程是否需要获得互斥对象的所有权才能关闭互斥对象的句柄
- 异构容器和句柄对象