我正在阅读这个'这个'指针,我想我比以前更了解它,但我还是需要澄清一下。所以,根据我的理解,如果你有
class Simple
{
private:
int m_nID;
public:
Simple(int nID)
{
SetID(nID);
}
void SetID(int nID) { m_nID = nID; }
int GetID() { return m_nID; }
};
SetID(int nID)函数实际上在语义上转换为:
void SetID(Simple* const this, int nID) { this->m_nID = nID; }
有意义的是,在大多数情况下,类的所有成员函数都有一个this
指针。但是如果你有一个不带参数的成员函数会发生什么?有这个'这个'指针?如果是这样,它是否指向返回类型而不是参数类型?
答案 0 :(得分:3)
但是如果你有一个不需要的成员函数会发生什么 参数呢?有这个'这个'指针?如果是这样,它是否指向 返回类型而不是参数类型?
即使你的方法没有任何参数,它仍然有一个隐藏参数,即this
指针。
答案 1 :(得分:1)
所有不静态的类方法都会得到一个this指针。
This article提供了一些关于何时可能需要使用此指针的想法。
C ++中this指针的存在与调用约定有关。这意味着堆栈和cpu寄存器中的空间如何保留用于函数的参数存在差异。
C ++中的非静态方法通常使用thiscall约定而不是其他约定(在编译器和体系结构之间有所不同)。