我遇到过一些C ++代码。为什么我们必须在块中使用* this而不是这个?

I have come across some C++ code.Why we have to use *this in block instead of this?

我有以下代码,我想知道为什么它使用*this而不是this

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Quotation
{
protected:
    int value;
    char* type;
public:
    virtual Quotation* clone()=0;

    char * getType()
    {
        return type;
    }

    int getValue()
    {
        return value;
    }
};


class bikeQuotation : public Quotation
{
public:
    bikeQuotation(int number)
    {
        value=number;
        type="BIKE";
    }

    Quotation * clone()
    {
        return new bikeQuotation(*this);  // <-- Here!
    }
};


this是指向对象的指针。复制构造函数需要对对象的引用。将指针转换为引用的方法是使用取消引用的*运算符。