मैं निम्नलिखित कोड है:क्यों विनाशक को दो बार बुलाया जाता है?
#include <cstdio>
#include <iostream>
using namespace std;
class A
{
int a, b;
public:
A() : A(5, 7) {}
A(int i, int j)
{
a = i;
b = j;
}
A operator+(int x)
{
A temp;
temp.a = a + x;
temp.b = b + x;
return temp;
}
~A() { cout << a << " " << b << endl; }
};
int main()
{
A a1(10, 20), a2;
a2 = a1 + 50;
}
आउटपुट यह पता चलता है:
60 70
60 70
10 20
कोड लगभग काम करता है के रूप में उम्मीद। समस्या यह है कि यह ऑब्जेक्ट a2
के मूल्यों को दो बार प्रिंट करता है ... इसका मतलब है कि विनाशक को दो बार बुलाया जाता है ... लेकिन इसे दो बार क्यों कहा जाता है?
आप भूल गए कि 'temp' भी एक वस्तु है। –
@ ओलिवर चार्ल्सवर्थ वेल, शायद यह आरवीओड है। लेकिन 'ए 1 + 50' द्वारा निर्मित अस्थायी नहीं किया जा सकता है। –