Thao tác trên con trỏ "này" có gọi là hàm tạo không?* điều này làm cho một cuộc gọi đến nhà xây dựng?
Tôi có một nhà xây dựng quy định như sau
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;
}
trong hàm main Tôi có sth như ...
Cents c;
cout<<"Before post incrementing\n";
c++; //This part is calling the constructor thrice
Bây giờ Nếu tôi đang làm một số hoạt động như *this = *this + 1
. Nó gọi hàm khởi tạo này hai lần.
gì chính xác là xảy ra ở đây. *this
có tạo đối tượng tạm thời và gán giá trị cho đối tượng gốc không?
Vui lòng hiển thị thêm mã cho chúng tôi. Bạn có bản sao hàm tạo và toán tử gán được xác định? –
@ RafałRawicki .... Không, tôi không có bất kỳ nhà xây dựng bản sao hoặc toán tử gán nào được xác định. –
Bạn có thể đăng ví dụ hoàn chỉnh không? Xem http://sscce.org Tôi nghĩ, các nhà xây dựng Cents nên được gọi một lần trong biểu thức này, không phải hai lần. –