这个保证背后的地址是否与带有对象的变量相同



在以下代码的情况下:

#include<iostream>
class Sample
{
public:
Sample* getSelf()
{
return this;
}
};
int main()
{
Sample s;
if(reinterpret_cast<void*>(&s) == reinterpret_cast<void*>(s.getSelf()))
std::cout << "Same address" << std::endl;
return 0;
}

if语句中的条件保证为真吗?

我对void*进行了强制转换,以确保比较原始地址,以防在比较特定指针类型时出现一些异常。

是的,您的if语句保证是truegetSelf()中的this是指向实例的指针。

main中的&s也是指向该实例的指针。

正如你所怀疑的那样,演员阵容是不必要的。

相关内容

  • 没有找到相关文章

最新更新