这是否会保存 this 指向的地址:
size_t this_address = size_t(this);
这是便携的吗?我需要保存 this 指向的地址。关于是否有正确的方法来解决这个问题的任何建议。请注意,出于优化目的。
这是否会保存 this 指向的地址:
size_t this_address = size_t(this);
这是便携的吗?我需要保存 this 指向的地址。关于是否有正确的方法来解决这个问题的任何建议。请注意,出于优化目的。
void *
是一种更便携,在我看来,更正确的存储指针地址的方法:
void *this_address = this;
这就是说,为什么你需要它是便携的?它根本不是类型安全的,您应该使用指向正确(基本)类型的指针,或者在适用时使用(基本)类型的智能指针。
你可以简单地说:
MyClass* foo = this;
根本不需要做任何铸造。
我认为以下应该是存储地址的方法
const void* address = static_cast<const void*>(this);
如果您需要一些自动内存管理(例如所有权管理和引用计数),您可以使用shared_ptr<MyClass>
来存储指向对象的指针,其中MyClass
是类的类型。