В случае следующего кода:
#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*
, чтобы быть уверенным что сравниваются необработанные адреса, в случае, если есть некоторые особенности в сравнении указанных c типов указателей.