C++の内部動作についていくつか質問があります。たとえば、クラスのすべてのメンバー関数には、暗黙の非表示パラメーターがあります。これは、thisポインターです(Pythonとほぼ同じです)。
class Foo
{
Foo(const Foo& other);
};
// ... is actually...
class Foo
{
Foo(Foo* this, const Foo& other);
};
関数の有効性がこれの有効性に直接依存していないと仮定するのは間違っていますか(これは単なる別のパラメーターであるため)?つまり、確かに、thisポインターのメンバーにアクセスしようとすると、有効である方がよいのですが、それ以外の場合は、これが削除されても関数は続行されますよね?
たとえば、このポインタを台無しにして、下に表示されているようなことをした場合はどうなりますか?これは未定義の動作ですか、それとも非常に落胆した動作によって定義されていますか?(私は純粋な好奇心から求めています。)
Foo:Foo(const Foo& other)
{
delete this;
this = &other;
}