在什么情况下'这个'指针传递给类方法?

时间:2014-04-19 03:32:36

标签: c++ this class-method

我正在阅读这个'这个'指针,我想我比以前更了解它,但我还是需要澄清一下。所以,根据我的理解,如果你有

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指针。但是如果你有一个不带参数的成员函数会发生什么?有这个'这个'指针?如果是这样,它是否指向返回类型而不是参数类型?

2 个答案:

答案 0 :(得分:3)

  

但是如果你有一个不需要的成员函数会发生什么   参数呢?有这个'这个'指针?如果是这样,它是否指向   返回类型而不是参数类型?

即使你的方法没有任何参数,它仍然有一个隐藏参数,即this指针。

答案 1 :(得分:1)

所有不静态的类方法都会得到一个this指针。

This article提供了一些关于何时可能需要使用此指针的想法。

C ++中this指针的存在与调用约定有关。这意味着堆栈和cpu寄存器中的空间如何保留用于函数的参数存在差异。

C ++中的非静态方法通常使用thiscall约定而不是其他约定(在编译器和体系结构之间有所不同)。