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