gpt4 book ai didi

c++ - *这会调用构造函数?

转载 作者:可可西里 更新时间:2023-11-01 17:32:45 25 4
gpt4 key购买 nike

对“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com