Может ли кто-нибудь объяснить, как выглядит вывод этого кода:
deleting 0xbfc69f7c 3,7
deleting 0xbfc69f84 2,4
deleting 0xbfc69f8c 1,3
Почему не вызывается деструктор временных объектов, созданный при возврате из перегруженного оператора +. Является ли объект Fraction, созданный внутри функции +, и его временная копия одинаковыми, а деструктор вызывается только один раз, я думаю, этого не должно быть. Может ли кто-нибудь объяснить, какие на самом деле операции здесь происходят.
Заранее спасибо!
class Fraction{
int num ;
int den ;
public:
Fraction( int x = 0 , int y = 0 ){ num = x ; den = y ; }
Fraction( const Fraction & f ){
cout<<"Copy Constructor for "<<f.num<<" , "<<f.den<<endl ;
num = f.num ;
den = f.den ;
}
Fraction operator+( const Fraction& f) const{
int x = f.num + num ;
int y = f.den + den ;
return Fraction(x,y) ;
}
~Fraction(){
cout<<"deleting "<<this<<" "<<num<<","<<den<<endl ;
}
};
int main() {
Fraction f1(1,3);
Fraction f2( 2, 4 );
Fraction f3 = f1 + f2 ;
return 0;
}