У меня есть несколько вопросов о внутренней работе C ++. Например, я знаю, что каждая функция-член класса имеет скрытый скрытый параметр, который является указателем this (во многом аналогично тому, как это делает Python):
class Foo
{
Foo(const Foo& other);
};
// ... is actually...
class Foo
{
Foo(Foo* this, const Foo& other);
};
Неужели я тогда ошибочно полагаю, что действительность функции напрямую не зависит от ее достоверности (поскольку это просто еще один параметр)? Я имею в виду, конечно, если вы попытаетесь получить доступ к члену this-указателя, он будет действительным, но в противном случае функция будет продолжена, если это будет удалено, верно?
Например, что если бы я испортил указатель this и сделал что-то вроде того, что вы видите ниже? Это неопределенное поведение, или оно определено крайне обескураженным? (Я спрашиваю из чистого любопытства.)
Foo:Foo(const Foo& other)
{
delete this;
this = &other;
}