Я до сих пор не смог найти окончательного ответа на этот вопрос. Когда безопасно вызывать this->
изнутри объекта. И, в частности, изнутри конструктора и деструктора.
А также при использовании общего наследования. Безопасно ли использовать результат и понижение в результате этого вызова?
Итак, например:
class foo
{
foo():
a(),
b(this->a)//case 1
{
this-> a = 5; //case 2
}
int a;
int b;
};
class bar: public baz
{
bar():
baz(this)//case 3 - assuming baz has a valid constructor
{
}
}
И, наконец, самый маловероятный
foo()
{
if(static_cast<bar*>(this));//case 4
}
Какие из перечисленных случаев являются законными?
Примечание: Я знаю, что многие из описанных выше методов нецелесообразны.