Commit 7931dfa3 by Szeberényi Imre

kodreszletek

parent 52b0366a
......@@ -20,6 +20,9 @@
/// kiíródjanak a képernyőre. Így hatásuk jól megfigyelhető.
#define _(...) std::cout << std::endl << std::setw(50) << std::left << #__VA_ARGS__ << "// "; __VA_ARGS__
/// Sor elejére ír és endl, majd végrehajt
#define __(...) std::cout << std::endl << #__VA_ARGS__ << std::endl; __VA_ARGS__
using std::cout;
using std::cerr;
using std::cin;
......@@ -32,7 +35,7 @@ struct Base {
};
// Der az inicializáló listán hívja Base függvényét,
// amely a Base adattagját adja vissza, de ez még nem inicailizálódott!!!!
// amely a Base adattagját adja vissza, de ez még nem inicailizálódott !!!!
struct Der : Base {
int b;
Der() : Base(b = f()) {
......@@ -40,6 +43,48 @@ struct Der : Base {
}
};
struct B {
B(int i) {
cout << "B ctor begin" << endl;
if (i == 0) throw std::range_error("B ctor nem futott le!");
cout << "B ctor END" << endl;
}
~B() { cout << "B dtor" << endl;}
};
struct A {
int a;
B b;
A(int i) try
:b(i), a(3) {
cout << "A ctor begin" << endl;
if (i == 1) throw std::range_error("A ctor nem futott le!");
cout << "A ctor END" << endl;
} catch (std::exception& e) { // kivételkezelés
cout << e.what() << endl;
throw std::range_error("A ctor sem futott le!");
}
~A() {
if (std::uncaught_exception())
cout << "A dtor: rollback folyamatban" << endl;
else
cout << "A dtor" << endl;
}
};
void ctorHiba(int i) {
try {
A a_obj(i);
cout << "A a_obj leterjott." << endl;
if (i == 2) {
cout << "Most dobunk a fuggvenyben." << endl;
throw std::range_error("...");
}
} catch (std::exception& e) {
cout << e.what() << endl;
}
}
int hibas_osztaly() {
cout << "Mit ir ki? ";
cout << "Nem tudjuk!" << endl;
......@@ -141,6 +186,11 @@ _( return 0;)
int main() {
_( hibas_osztaly(); )
__( ctorHiba(0); ) // B konstruktor dob
__( ctorHiba(1); ) // A konstruktro dob
__( ctorHiba(2); ) // ctorHiba dob
__( ctorHiba(3); ) // nem dob senki
_( hibas_osztaly(); )
tarolok();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment