Commit 7931dfa3 by Szeberényi Imre

kodreszletek

parent 52b0366a
...@@ -20,6 +20,9 @@ ...@@ -20,6 +20,9 @@
/// kiíródjanak a képernyőre. Így hatásuk jól megfigyelhető. /// 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__ #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::cout;
using std::cerr; using std::cerr;
using std::cin; using std::cin;
...@@ -32,7 +35,7 @@ struct Base { ...@@ -32,7 +35,7 @@ struct Base {
}; };
// Der az inicializáló listán hívja Base függvényét, // 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 { struct Der : Base {
int b; int b;
Der() : Base(b = f()) { Der() : Base(b = f()) {
...@@ -40,6 +43,48 @@ struct Der : Base { ...@@ -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() { int hibas_osztaly() {
cout << "Mit ir ki? "; cout << "Mit ir ki? ";
cout << "Nem tudjuk!" << endl; cout << "Nem tudjuk!" << endl;
...@@ -141,6 +186,11 @@ _( return 0;) ...@@ -141,6 +186,11 @@ _( return 0;)
int main() { 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(); 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