0

我对 C++ 的内部工作有一些疑问。例如,我知道一个类的每个成员函数都有一个隐含的隐藏参数,即 this 指针(与 Python 的做法非常相似):

class Foo 
{
    Foo(const Foo& other);
};

// ... is actually...

class Foo
{
    Foo(Foo* this, const Foo& other);
};

然后假设函数的有效性不直接取决于 this 的有效性(因为它只是另一个参数),我是错误的吗?我的意思是,当然,如果您尝试访问 this 指针的成员,它最好是有效的,但是如果它被删除,该函数将继续,对吧?

例如,如果我弄乱了 this 指针并执行如下所示的操作怎么办?这是未定义的行为,还是由高度气馁定义的?(我是出于纯粹的好奇而问的。)

Foo:Foo(const Foo& other)
{
    delete this;
    this = &other;
}
4

2 回答 2

2

您不能分配给this- 它是类型Foo * const在某些情况下可以delete this;但这很少是一个好主意。

于 2011-04-19T10:11:24.653 回答
1

this定义为,

Foo(Foo* const this, ...);

(特殊情况)const不可能消除这种情况。this编译器会给出相同的错误。我问过类似的问题

于 2011-04-19T10:19:55.400 回答