Witam, jest tu ktoś kto wytłumaczyłby działanie tego programu? Wynikiem jest wypisanie 33338CCCC2B. Nie rozumiem dlaczego w takiej kolejności wypisane są znaki więc jeśli ktoś mógłby krok po kroku wytłumaczyć mi działanie tego kodu byłbym bardzo wdzięczny.
#include <iostream>
using namespace std;
struct E{
E(){cout<<'8';}
char what()const{return '2';}
~E(){ cout<<'B';}
};
struct B{
B(char c) : c_(c) {cout << '3';}
~B(){cout << c_;}
private:
char c_;
};
struct C:B{
C( char c ): B(c){}
};
void f(int i){
C c('C');
if( i>0)
f(i-2);
else
throw E();
C cc('4');
}
int main(){
try {
f(5);
}
catch (const exception&e){cout<<'Y';}
catch (const E&e){cout<<e.what();}
catch(...){cout<<'6';}
}