0

这是否会保存 this 指向的地址:

size_t this_address = size_t(this);

这是便携的吗?我需要保存 this 指向的地址。关于是否有正确的方法来解决这个问题的任何建议。请注意,出于优化目的。

4

4 回答 4

6

void *是一种更便携,在我看来,更正确的存储指针地址的方法:

void *this_address = this;

这就是说,为什么你需要它是便携的?它根本不是类型安全的,您应该使用指向正确(基本)类型的指针,或者在适用时使用(基本)类型的智能指针。

于 2013-08-12T19:07:40.480 回答
5

你可以简单地说:

MyClass* foo = this;

根本不需要做任何铸造。

于 2013-08-12T19:32:19.603 回答
4

我认为以下应该是存储地址的方法

const void* address = static_cast<const void*>(this);

于 2013-08-12T19:10:34.237 回答
1

如果您需要一些自动内存管理(例如所有权管理和引用计数),您可以使用shared_ptr<MyClass>来存储指向对象的指针,其中MyClass是类的类型。

于 2013-08-12T19:10:40.760 回答