User Tools

Site Tools


cpp:function_try_blocks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cpp:function_try_blocks [2019/05/15 08:24] – [Function Try Blocks] gthanoscpp:function_try_blocks [2022/05/23 06:05] (current) – [Εξαιρέσεις που παράγονται στον κατασκευαστή] gthanos
Line 32: Line 32:
  
 Name& Name::operator=(const Name& a) { Name& Name::operator=(const Name& a) {
 +  cout << "--- Operator= ---\n";
   if(name != nullptr)    if(name != nullptr) 
     free(name);     free(name);
Line 84: Line 85:
  
 Εάν μεταγλωττίσουμε και εκτελέσουμε την παρακάτω συνάρτηση //main// ο κώδικας εκτυπώνει τα εξής: Εάν μεταγλωττίσουμε και εκτελέσουμε την παρακάτω συνάρτηση //main// ο κώδικας εκτυπώνει τα εξής:
-<code cpp main.cpp>+<code cpp CreatePerson.cpp>
 #include <iostream> #include <iostream>
 using namespace std; using namespace std;
Line 104: Line 105:
 Name constructor: John Name constructor: John
 Name constructor: Snow Name constructor: Snow
 +--- Operator= ---
 Name destructor: Snow Name destructor: Snow
 Name destructor: Snow Name destructor: Snow
Line 142: Line 144:
 Name constructor: John Name constructor: John
 Name constructor: Snow Name constructor: Snow
 +--- Operator= ---
 Name destructor: Snow Name destructor: Snow
 Name destructor: Snow Name destructor: Snow
Line 170: Line 173:
 </code> </code>
  
-Εάν επιθυμούμε να "πιάσουμε" την εξαίρεση εντός του κατασκευαστή της κλάσης //Student// θα πρέπει να κρατήσουμε τον κατασκευαστή της κλάσης //Person// στην αρχική του μορφή και να ξαναγράψουμε τον κατασκευαστή:+Εάν επιθυμούμε να "πιάσουμε" την εξαίρεση εντός του κατασκευαστή της κλάσης //Student// και όχι εντός της //Person//, θα πρέπει να κρατήσουμε τον κατασκευαστή της κλάσης //Person// στην αρχική του μορφή (πριν την τελευταία αλλαγή) και να ξαναγράψουμε τον κατασκευαστή της κλάσης //Student// ως εξής:
  
 <code cpp Student.hpp> <code cpp Student.hpp>
Line 188: Line 191:
 </code> </code>
  
-Η παραπάνω σύνταξη επιτρέπει να πιάσουμε το exception που συμβαίνει στον κατασκευαστή της προγόνου κλάσης. Και εδώ το //exception// θα αναπαραχθεί σύμφωνα με τους κανόνες που ίσχυσαν και στο προηγούμενο παράδειγμα. Παρατηρήστε ότι δεν εκτυπώνεται ποτέ το μήνυμα **"Student constructor"** του κατασκευαστή. Γιατί?+Η παραπάνω σύνταξη επιτρέπει να πιάσουμε το exception που συμβαίνει στον κατασκευαστή της προγόνου κλάσης. Και εδώ το //exception// θα αναπαραχθεί σύμφωνα με τους κανόνες που ίσχυσαν και στο προηγούμενο παράδειγμα.  
 + 
 +<WRAP tip 80% center round> 
 +Παρατηρήστε ότι δεν εκτυπώνεται ποτέ το μήνυμα **"Student constructor"** του κατασκευαστή. Γιατί? 
 +</WRAP>
  
 Η μέθοδος //main// δίνεται παρακάτω: Η μέθοδος //main// δίνεται παρακάτω:
cpp/function_try_blocks.1557908663.txt.gz · Last modified: 2019/05/15 07:24 (external edit)