“this”指针上的操作是否调用构造函数?

我有一个定义如下的构造函数

    Cents(int cents)
    {
            cout<<"in cents constructor\n";
            m_cents = cents;
    }

    friend Cents operator + (const Cents &c1, const Cents &c2)
    {
            return Cents(c1.m_cents + c2.m_cents);
    }

    Cents operator ++ (int)
    {
            cout<<"In c++ function\n";
            Cents c(m_cents);
            *this = *this + 1 ;
            return c;
    }

在主要功能上,我有……
    Cents c;
    cout<<"Before post incrementing\n";
    c++; //This part is calling the constructor thrice

现在,如果我正在执行类似*this = *this + 1的操作。
它两次调用此构造函数。

这到底是怎么回事。 *this是否创建一个临时对象并将该值分配给原始对象?

最佳答案

不,取消引用指针不会创建任何新对象

因此,如果仅为类的实例定义了operator+,则将根据 1构造一个新实例,因为构造函数Cents(int cents)未标记为显式。

关于c++ - *这会调用构造函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10267212/

10-11 18:43