<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://courses.e-ce.uth.gr/ECE326/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://courses.e-ce.uth.gr/ECE326/feed.php">
        <title>Αντικειμενοστραφής Προγραμματισμός - cpp</title>
        <description></description>
        <link>http://courses.e-ce.uth.gr/ECE326/</link>
        <image rdf:resource="http://courses.e-ce.uth.gr/ECE326/lib/exe/fetch.php?media=logo.png" />
       <dc:date>2026-04-24T09:50:46+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:acccess_modifiers&amp;rev=1621319868&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:arrays&amp;rev=1493786598&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:basic_data_types&amp;rev=1619359360&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:basic_io&amp;rev=1619360090&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:classes&amp;rev=1620342072&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:class_templates&amp;rev=1590389526&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:class_templates_specialization&amp;rev=1653562041&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constants&amp;rev=1682421575&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constructors&amp;rev=1620367910&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constructors_destructors&amp;rev=1586338404&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:const_member_functions&amp;rev=1620373812&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:const_pointers&amp;rev=1619498498&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:copy_constructors&amp;rev=1652384466&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:destructors&amp;rev=1621233400&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:dynamic_memory&amp;rev=1619499704&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception&amp;rev=1684159289&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_inheritance&amp;rev=1684159691&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_rethrow&amp;rev=1589656368&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_specifiers&amp;rev=1557129044&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:file_io&amp;rev=1589739464&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:friend_methods&amp;rev=1621318868&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:functions&amp;rev=1619505812&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:function_templates&amp;rev=1622824144&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:function_try_blocks&amp;rev=1653285914&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:functors&amp;rev=1590985520&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:inheritance&amp;rev=1652425298&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:inheritance_protected_private&amp;rev=1652425561&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:interfaces&amp;rev=1620376952&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:isteams&amp;rev=1589735494&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:multiple_inheritance&amp;rev=1620377098&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:namespace&amp;rev=1620341524&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:object_creation&amp;rev=1620368526&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:object_lifecycle&amp;rev=1620369306&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:operators&amp;rev=1713952269&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:operator_overloading&amp;rev=1621837714&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:osteams&amp;rev=1589739026&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:pointers&amp;rev=1682428442&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:polymorphism&amp;rev=1586940484&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:references&amp;rev=1619505398&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:rethrow&amp;rev=1557123754&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stack_unwinding&amp;rev=1684160028&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:static_members&amp;rev=1494358368&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:std_strings&amp;rev=1682433993&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:streams&amp;rev=1589734424&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stream_random_io&amp;rev=1558511844&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stream_states&amp;rev=1622530552&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:strings&amp;rev=1619498756&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stringstreams&amp;rev=1558468142&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:templates&amp;rev=1590860750&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:this&amp;rev=1586356334&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:toc&amp;rev=1685473702&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading&amp;rev=1621838114&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_binary_operators&amp;rev=1621838576&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_binary_operators2&amp;rev=1621838734&amp;do=diff"/>
                <rdf:li rdf:resource="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_unary_operators&amp;rev=1621838326&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://courses.e-ce.uth.gr/ECE326/lib/exe/fetch.php?media=logo.png">
        <title>Αντικειμενοστραφής Προγραμματισμός</title>
        <link>http://courses.e-ce.uth.gr/ECE326/</link>
        <url>http://courses.e-ce.uth.gr/ECE326/lib/exe/fetch.php?media=logo.png</url>
    </image>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:acccess_modifiers&amp;rev=1621319868&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-18T06:37:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>acccess_modifiers</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:acccess_modifiers&amp;rev=1621319868&amp;do=diff</link>
        <description>Προσδιοριστές Πρόσβασης

Οι προσδιοριστές πρόσβασης επιτρέπουν την απόκρυψη της πληροφορίας που είναι από τις βασικές αρχές του αντικειμενοστραφή προγραμματισμού. Με την έννοια</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:arrays&amp;rev=1493786598&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-05-03T04:43:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>arrays</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:arrays&amp;rev=1493786598&amp;do=diff</link>
        <description>Πίνακες

Ένας πίνακας είναι μία σειρά από μεταβλητές του ιδίου τύπου τοποθετημένες σε μία συνεχή περιοχή μνήμης. Τα επιμέρους στοιχεία του πίνακα μπορούν να προσδιοριστούν με τη χρήση ενός ακεραίου δείκτη σε συνδυασμό με το όνομα του πίνακα. Η αρίθμηση των στοιχείων του πίνακα ξεκινάει πάντα από την θέση 0.…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:basic_data_types&amp;rev=1619359360&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-25T14:02:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>basic_data_types</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:basic_data_types&amp;rev=1619359360&amp;do=diff</link>
        <description>Βασικοί τύποι δεδομένων

Οι βασικοί τύποι δεδομένων στη C++ είναι κατά βάση κοινοί με τους τύπους δεδομένων στη C, με κάποιες επεκτάσεις.

	*</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:basic_io&amp;rev=1619360090&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-25T14:14:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>basic_io</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:basic_io&amp;rev=1619360090&amp;do=diff</link>
        <description>Βασική είσοδος και έξοδος

Η C++ χρησιμοποιεί την έννοια του stream προκειμένου να διαβάσει ή να γράψει σε σειριακές συσκευές όπως είναι η κονσόλα και το πληκτρολόγιο. Ένα</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:classes&amp;rev=1620342072&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-06T23:01:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>classes</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:classes&amp;rev=1620342072&amp;do=diff</link>
        <description>Κλάσεις και Αντικείμενα

Όπως και στη Java οι κλάσεις στη C++ δημιουργούν νέους τύπους δεδομένων. Παρακάτω δίνεται το παράδειγμα της κλάσης</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:class_templates&amp;rev=1590389526&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-25T06:52:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>class_templates</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:class_templates&amp;rev=1590389526&amp;do=diff</link>
        <description>Templates κλάσεων

Σε αναλογία με τα templates συναρτήσεων μπορούμε να κατασκευάσουμε κλάσεις που να λαμβάνουν ως παράμετρο ένα ή περισσότερους τύπους δεδομένων. Στο παρακάτω παράδειγμα, έχουμε την κλάση</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:class_templates_specialization&amp;rev=1653562041&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-26T10:47:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>class_templates_specialization</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:class_templates_specialization&amp;rev=1653562041&amp;do=diff</link>
        <description>Εξειδίκευση ενός υφιστάμενου template

Εξειδίκευση της κλάσης Box στην περίπτωση που η παράμετρος είναι δείκτης

Συχνά είναι απαραίτητο να προδιαγράψουμε διαφορετική λειτουργικότητα σε ένα template με βάση τον τύπο των δεδομένων που θα εισαχθεί τελικά στην κλάση. Για παράδειγμα, για την κλάση…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constants&amp;rev=1682421575&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-25T11:19:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>constants</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constants&amp;rev=1682421575&amp;do=diff</link>
        <description>Κυριολεκτικά

Τα κυριολεκτικά αποτελούν σταθερές αριθμητικές εκφράσεις που εμφανίζονται μέσα στον κώδικα.

Ακέραια κυριολεκτικά

Τα δεκαδικά κυριολεκτικά μπορούν να απεικονιστούν στις παρακάτω μορφές τόσο ως προσημασμένοι ή μη προσημασμένοι ακέραιοι</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constructors&amp;rev=1620367910&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-07T06:11:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>constructors</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constructors&amp;rev=1620367910&amp;do=diff</link>
        <description>Κατασκευαστές της κλάσης

Στο προηγούμενο παράδειγμα της κλάσης Rectangle δεν δηλώθηκε κάποιος κατασκευαστής. Ο κατασκευαστής της κλάσης είναι συνάρτηση που έχει το όνομα της κλάσης και δεν έχει επιστρεφόμενο τύπο. Ο ρόλος του κατασκευαστή της κλάσης είναι να αρχικοποιήσει τις τιμές των πεδίων της κλάσης. Σημειώστε, ότι ο κατασκευαστής της κλάσης στη C++ δεν δεσμεύει χώρο στη μνήμη, όπως συμβαίνει στη Java. Για την κλάση…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constructors_destructors&amp;rev=1586338404&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-04-08T09:33:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>constructors_destructors</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:constructors_destructors&amp;rev=1586338404&amp;do=diff</link>
        <description>Κατασκευαστές και καταστροφείς της κλάσης

Στο προηγούμενο παράδειγμα της κλάσης Rectangle δεν δηλώθηκε κάποιος κατασκευαστής. Ο κατασκευαστής της κλάσης είναι μέθοδος που έχει το όνομα της κλάσης και δεν έχει επιστρεφόμενο τύπο. Ο ρόλος του κατασκευαστή της κλάσης είναι να αρχικοποιήσει τις τιμές των πεδίων της κλάσης. Σημειώστε, ότι ο κατασκευαστής της κλάσης στη C++ δεν δεσμεύει χώρο στη μνήμη, όπως συμβαίνει στη Java. Για την κλάση…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:const_member_functions&amp;rev=1620373812&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-07T07:50:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>const_member_functions</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:const_member_functions&amp;rev=1620373812&amp;do=diff</link>
        <description>Const μέθοδοι της κλάσης

Όταν δηλώνεται ένα αντικείμενο ως const (όπως παρακάτω), τότε τα πεδία του αντικειμένου μπορούν μόνο να διαβαστούν αλλά όχι να μεταβληθούν, πρόκειται δηλαδή για ένα αμετάβλητο αντικείμενο. Εξαίρεση αποτελεί ο κατασκευαστής του αντικειμένου, ο οποίος αρχικοποιεί κανονικά το αντικείμενο και μεταβάλλει τις μεταβλητές του.…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:const_pointers&amp;rev=1619498498&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-27T04:41:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>const_pointers</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:const_pointers&amp;rev=1619498498&amp;do=diff</link>
        <description>Δείκτες αμετάβλητου περιεχομένου και αμετάβλητης διεύθυνσης

Δείκτες αμετάβλητου περιεχομένου

Είδαμε ότι οι δείκτες είναι μεταβλητές που περιέχουν διευθύνσεις μνήμης στις οποίες αποθηκεύονται άλλες μεταβλητές. Μέσω των δεικτών μπορούμε να διαβάσουμε και να γράψουμε το περιεχόμενο μία διεύθυνσης μνήμης. Υπάρχουν όμως περιπτώσεις που ένας δείκτης είναι επιθυμητό να διαβάζει μόνο τα περιεχόμενα των διευθύνσεων μνήμης στα οποία δείχνει χωρίς να μπορεί να τα μεταβάλλει. Σε αυτή την περίπτωση αρκεί ν…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:copy_constructors&amp;rev=1652384466&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-12T19:41:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>copy_constructors</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:copy_constructors&amp;rev=1652384466&amp;do=diff</link>
        <description>Κατασκευαστές Αντιγραφείς

Στην ενότητα των συναρτήσεων είδαμε την κλήση με τιμή και κλήση με αναφορά προκειμένου να περάσουμε παραμέτρους σε μία συνάρτηση. Κατά την κλήση με τιμή</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:destructors&amp;rev=1621233400&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-17T06:36:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>destructors</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:destructors&amp;rev=1621233400&amp;do=diff</link>
        <description>Καταστροφείς της κλάσης

Εκτός από τον κατασκευαστή μίας κλάσης, στη C++ έχουμε τη δυνατότητα (και συχνά οφείλουμε) να ορίσουμε και τον καταστροφέα της. Ο καταστροφέας καλείται κατά την καταστροφή του αντικειμένου, ώστε να γίνουν οι απαραίτητες εργασίες</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:dynamic_memory&amp;rev=1619499704&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-27T05:01:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dynamic_memory</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:dynamic_memory&amp;rev=1619499704&amp;do=diff</link>
        <description>Δυναμική διαχείριση μνήμης

Όπως και στη C έτσι και στη C++ η μνήμη μπορεί να δεσμευθεί δυναμικά στο χώρο δεδομένων που ονομάζεται heap. Εκτός των συναρτήσεων</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception&amp;rev=1684159289&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-15T14:01:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exception</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception&amp;rev=1684159289&amp;do=diff</link>
        <description>Δημιουργία και Διαχείριση Εξαιρέσεων

Ας εξετάσουμε την κλάση Vector που είδαμε στην ενότητα της υπερφόρτωση τελεστών. Ο προσδιοριστής nothrow</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_inheritance&amp;rev=1684159691&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-15T14:08:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exception_inheritance</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_inheritance&amp;rev=1684159691&amp;do=diff</link>
        <description>Κληρονομικότητα εξαιρέσεων

Ας υποθέσουμε ότι έχουμε τη σχέση κληρονομικότητας μεταξύ των κλάσεων BaseException και DerivedException, όπως παρακάτω:


using namespace std;

class BaseException {
protected:
  int a;
  char s[64];
public:
  BaseException(int a) { this-&gt;a = a; }
  virtual char* message() {
    sprintf(s, &quot;BaseException, a: %d\n&quot;, a);
    return s;
  }
};</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_rethrow&amp;rev=1589656368&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-16T19:12:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exception_rethrow</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_rethrow&amp;rev=1589656368&amp;do=diff</link>
        <description>Διαχείριση εξαίρεσης και παραγωγή νέας εξαίρεσης κατά τη διαχείριση της

Κάποιες φορές είναι επιθυμητό να διαχειριστούμε μία εξαίρεση προκειμένου να κλείσουμε περιγραφείς αρχείων,</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_specifiers&amp;rev=1557129044&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-05-06T07:50:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exception_specifiers</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:exception_specifiers&amp;rev=1557129044&amp;do=diff</link>
        <description>Δήλωση των εξαιρέσεων που παράγουν οι συναρτήσεις (exception specifiers)

Κατά τη δήλωση μίας συνάρτησης είναι δυνατόν να ορίσετε εάν αυτή μπορεί να παράγει κάποιου είδους</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:file_io&amp;rev=1589739464&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-17T18:17:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>file_io</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:file_io&amp;rev=1589739464&amp;do=diff</link>
        <description>Είσοδος και έξοδος αρχείων

Η standard βιβλιοθήκη της C++ παρέχει τις παρακάτω κλάσεις για είσοδο και έξοδο από αρχεία.

	*  ifstream: Κλάση για διάβασμα από αρχείο.</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:friend_methods&amp;rev=1621318868&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-18T06:21:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>friend_methods</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:friend_methods&amp;rev=1621318868&amp;do=diff</link>
        <description>Φιλικές συναρτήσεις και φιλικές κλάσεις

Φιλικές Συναρτήσεις

Μία φιλική συνάρτηση της κλάσης είναι μία συνάρτηση που δεν είναι μέλος της κλάσης, αλλά έχει πρόσβαση στα</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:functions&amp;rev=1619505812&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-27T06:43:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>functions</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:functions&amp;rev=1619505812&amp;do=diff</link>
        <description>Συναρτήσεις

Στη C++ οι μέθοδοι συνηθίζεται να καλούνται συναρτήσεις. Η συγκεκριμένη ονοματολογία προέρχεται ως κληρονομιά από την γλώσσα C. Η βασική διαφορά σε σχέση με την Java είναι ότι μπορείτε να ορίσετε συναρτήσεις οι οποίες δεν ανήκουν σε κλάσεις, όπως παρακάτω.</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:function_templates&amp;rev=1622824144&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-04T16:29:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>function_templates</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:function_templates&amp;rev=1622824144&amp;do=diff</link>
        <description>Templates Συναρτήσεων

Ας υποθέσουμε ότι θέλουμε να φτιάξουμε μία συνάρτηση η οποία να βρίσκει το μέγιστο μεταξύ δύο τιμών. Η συνάρτηση θα μπορούσε να είναι η εξής:</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:function_try_blocks&amp;rev=1653285914&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-23T06:05:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>function_try_blocks</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:function_try_blocks&amp;rev=1653285914&amp;do=diff</link>
        <description>Εξαιρέσεις που παράγονται στον κατασκευαστή

Ας υποθέσουμε ότι έχουμε την παρακάτω κλάση Name η οποία περιγράφει ένα όνομα


#include &lt;cstring&gt;

class Name {
  char* name;
public:
  Name();
  Name(const char *name);
  ~Name();
  Name&amp; operator=(const Name&amp;);
};

Name::Name() {
  cout &lt;&lt; &quot;Name default constructor.&quot; &lt;&lt; endl;
  name = nullptr;
}

Name::Name(const char *name) {
  cout &lt;&lt; &quot;Name constructor: &quot; &lt;&lt; name &lt;&lt; endl;
  this-&gt;name = strdup(name);
}

Name::~Name() {
  cout &lt;&lt; &quot;Name destructor:…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:functors&amp;rev=1590985520&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-01T04:25:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>functors</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:functors&amp;rev=1590985520&amp;do=diff</link>
        <description>Function Objects ή Functors

Συχνά στην STL θέλουμε να εφαρμόσουμε μία συνάρτηση πάνω στο περιεχόμενο ενός container προκειμένου να μεταβάλλουμε το περιεχόμενο του ή να αποθηκεύσουμε το αλλαγμένο περιεχόμενο σε ένα διαφορετικό από το αρχικό</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:inheritance&amp;rev=1652425298&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-13T07:01:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>inheritance</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:inheritance&amp;rev=1652425298&amp;do=diff</link>
        <description>Κληρονομικότητα

Οι κλάσεις στη C++ μπορούν να επεκταθούν μέσω της κληρονομικότητας, δημιουργώντας νέες κλάσεις που διατηρούν τα χαρακτηριστικά των προγόνων τους. Η κληρονομικότητα προϋποθέτει ότι υπάρχει η βασική κλάση (πρόγονος) από την οποία προκύπτουν μία ή περισσότερες κλάσεις (απόγονοι). Οι απόγονοι διατηρούν τα χαρακτηριστικά του προγόνου, αλλά έχουν την δυνατότητα να προσθέσουν και επιπλέον χαρακτηριστικά στη νέα κλάση.…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:inheritance_protected_private&amp;rev=1652425561&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-13T07:06:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>inheritance_protected_private</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:inheritance_protected_private&amp;rev=1652425561&amp;do=diff</link>
        <description>Άλλες μορφές κληρονομικότητας

Εκτός από την κληρονομικότητα τύπου public (class Square: public Rectangle { };) μπορείτε να έχετε κληρονομικότητα τύπου protected</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:interfaces&amp;rev=1620376952&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-07T08:42:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>interfaces</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:interfaces&amp;rev=1620376952&amp;do=diff</link>
        <description>Interfaces

Η C++ δεν διαθέτει interfaces με τον αυστηρά ορισμένο τρόπο που αυτά ορίζονται στη Java. Αντ' αυτού υλοποιεί την λειτουργικότητα των interfaces μέσω</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:isteams&amp;rev=1589735494&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-17T17:11:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>isteams</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:isteams&amp;rev=1589735494&amp;do=diff</link>
        <description>Input Streams

Όπως προαναφέρθηκε τα streams εισόδου χρησιμοποιούν τον τελεστη &gt;&gt; (stream extraction operator) για την ανάγνωση από το stream. H standard βιβλιοθήκη παρέχει συναρτήσεις υπεφόρτωσης για τους βασικούς τύπους δεδομένων, ενώ δίνεται η δυνατότητα</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:multiple_inheritance&amp;rev=1620377098&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-07T08:44:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>multiple_inheritance</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:multiple_inheritance&amp;rev=1620377098&amp;do=diff</link>
        <description>Κληρονομικότητα πολλών γονικών κλάσεων

Η C++ δίνει την δυνατότητα να έχετε περισσότερες από μία γονικές κλάσεις για μία κλάση απόγονο. Εκ πρώτης όψεως αυτό έρχεται σε αντίθεση με τη βασική αρχή στη Java που επιτρέπει μόνο μία γονική κλάση κατά την διαδικασία της κληρονομικότητας. Γενικά, η πολλαπλή κληρονομικότητα θα πρέπει να χρησιμοποιείται με πολύ προσοχή και όπου είναι δυνατόν να αποφεύγεται.…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:namespace&amp;rev=1620341524&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-06T22:52:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>namespace</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:namespace&amp;rev=1620341524&amp;do=diff</link>
        <description>Χώροι Ονομάτων (Namespaces)

Προκειμένου να αποφεύγονται οι συγκρούσεις ονομάτων μεταξύ global μεταβλητών, κλάσεων ή συνάρτησεων η C++ ορίζει την έννοια του χώρου ονομάτων (</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:object_creation&amp;rev=1620368526&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-07T06:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>object_creation</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:object_creation&amp;rev=1620368526&amp;do=diff</link>
        <description>Δημιουργία αντικειμένων

Η δημιουργία αντικειμένων γίνεται με κλήση του αντίστοιχου κατασκευαστή ως εξής:


#include &lt;iostream&gt;
using namespace std;

class Rectangle {
  private:
    int width, height;
  public:
    Rectangle(int w, int h);
    Rectangle(int s);
    Rectangle();
    ~Rectangle();
    int getWidth() const;
    int getHeight() const;
    void setWidth(int w);
    void setHeight(int h);
};</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:object_lifecycle&amp;rev=1620369306&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-07T06:35:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>object_lifecycle</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:object_lifecycle&amp;rev=1620369306&amp;do=diff</link>
        <description>Κύκλος ζωής των αντικειμένων - Δημιουργία αντικειμένων μέσω δυναμικής δέσμευσης μνήμης

Παρακάτω δίνεται ο κώδικας της κλάσης Rectangle τον οποίο θα χρησιμοποιήσουμε για να μεταγλωττίσουμε και να εκτελέσουμε τα παραδείγματα που ακολουθούν. Η παρούσα κλάση αποτελείται από δύο πεδία τύπου int* (για την αποθήκευση του width και του height αντιστοίχως). Κατά την κατασκευή ενός αντικειμένου θα πρέπει απαραίτητα να δεσμεύεται ο απαιτούμενος χώρος για την αποθήκευση των τιμών του πλάτους και του ύψους.…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:operators&amp;rev=1713952269&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-24T09:51:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>operators</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:operators&amp;rev=1713952269&amp;do=diff</link>
        <description>Τελεστές

Η προτεραιότητα των τελεστών στη C++ δίνεται από τον παρακάτω πίνακα.
  Level     Precedence group     Operator     Description    Grouping    1   Scope   ::  scope qualifier    Left-to-right</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:operator_overloading&amp;rev=1621837714&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-24T06:28:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>operator_overloading</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:operator_overloading&amp;rev=1621837714&amp;do=diff</link>
        <description>Υπερφόρτωση τελεστών

Η C++ επιτρέπει την υπεφόρτωση των περισσότερων από τους διαθέσιμους τελεστές της γλώσσας. Με τον όρο υπεφόρτωση εννοούμε τον ορισμό μιας νέας συμπεριφοράς για τον τελεστή όταν αυτός εφαρμόζεται όχι σε βασικούς τύπους δεδομένων, αλλά σε σύνθετους τύπους δεδομένων που περιγράφονται από κλάσεις. Για παράδειγμα, στην παρακάτω κλάση…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:osteams&amp;rev=1589739026&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-17T18:10:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>osteams</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:osteams&amp;rev=1589739026&amp;do=diff</link>
        <description>Output Streams

Όπως προαναφέρθηκε τα streams εξόδου χρησιμοποιούν τον τελεστη &lt;&lt; (stream insertion operator) για εγγραφή στο stream. Σε αναλογία με τα input streams, η standard</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:pointers&amp;rev=1682428442&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-25T13:14:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>pointers</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:pointers&amp;rev=1682428442&amp;do=diff</link>
        <description>Δείκτες

Οι δείκτες είναι μεταβλητές που προσδιορίζουν τιμές διευθύνσεων στη μνήμη αντί για τιμές μεταβλητών. Η δήλωση ενός δείκτη γίνεται ως εξής:</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:polymorphism&amp;rev=1586940484&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-04-15T08:48:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>polymorphism</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:polymorphism&amp;rev=1586940484&amp;do=diff</link>
        <description>Δυναμικός Πολυμορφισμός

Ας επανέλθουμε στο αρχικό παράδειγμα της κληρονομικότητας και ας ορίσουμε δύο νέες μεταβλητές α) μία μεταβλητή τύπου δείκτη και μία μεταβλητή τύπου αναφορά σε ένα αντικείμενο τύπου</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:references&amp;rev=1619505398&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-27T06:36:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>references</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:references&amp;rev=1619505398&amp;do=diff</link>
        <description>Αναφορές (References)

Μία μεταβλητή τύπου αναφοράς αποτελεί ένα αμετάβλητο δείκτη σε μία υφιστάμενη μεταβλητή. Οι βασικές διαφορές ανάμεσα στις αναφορές και τους δείκτες είναι οι εξής:</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:rethrow&amp;rev=1557123754&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-05-06T06:22:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rethrow</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:rethrow&amp;rev=1557123754&amp;do=diff</link>
        <description>Διαχείριση εξαίρεσης και παραγωγή νέας εξαίρεσης κατά τη διαχείριση της

Κάποιες φορές είναι επιθυμητό να διαχειριστούμε μία εξαίρεση προκειμένου να κλείσουμε κάποιο</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stack_unwinding&amp;rev=1684160028&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-15T14:13:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stack_unwinding</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stack_unwinding&amp;rev=1684160028&amp;do=diff</link>
        <description>Stack Unwinding

Κατά την δημιουργία ενός exception μέσα σε μία συνάρτηση ή σε ένα κατασκευαστή δεν είναι απαραίτητο ότι η διαχείριση του exception θα πρέπει να γίνει στην ίδια τη συνάρτηση ή τον καστασκευαστή. Η διαδικασία όνομάζεται</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:static_members&amp;rev=1494358368&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-05-09T19:32:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>static_members</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:static_members&amp;rev=1494358368&amp;do=diff</link>
        <description>Στατικά μέλη της κλάσης

Σε αναλογία με τη Java μία κλάση μπορεί να έχει στατικά μέλη, πεδία και μεθόδους. Κάθε στατικό πεδίο αποτελεί μεταβλητή της κλάσης (</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:std_strings&amp;rev=1682433993&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-25T14:46:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std_strings</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:std_strings&amp;rev=1682433993&amp;do=diff</link>
        <description>Η κλάση std::string

Η standard βιβλιοθήκη της C++ διαθέτει την κλάση std::string. Οποιοδήποτε αντικείμενο της κλάσης αυτής μπορείτε να το αντιμετωπίζετε σαν ένα δυναμικά μεταβαλλόμενο πίνακα από χαρακτήρες. Η κλάση</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:streams&amp;rev=1589734424&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-17T16:53:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>streams</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:streams&amp;rev=1589734424&amp;do=diff</link>
        <description>I/O Streams

Η C++ εισάγει την έννοια του stream, ως μία ακολουθία χαρακτήρων θεωρητικά άπειρου μεγέθους. Οι χαρακτήρες:

	*  εισάγονται στο stream με συγκεκριμένη σειρά και γράφονται σε ένα αρχείο, σε ένα socket ή σε μία σειριακή συσκευή με τη σειρά που εισήχθησαν.</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stream_random_io&amp;rev=1558511844&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-05-22T07:57:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stream_random_io</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stream_random_io&amp;rev=1558511844&amp;do=diff</link>
        <description>Αλλαγή της θέσης ανάγνωσης ή εγγραφής στο stream

Τα streams εισόδου διατηρούν τη θέση ανάγνωσης και τα streams εξόδου τη θέση εγγραφής. Streams που υποστηρίζουν είσοδο και έξοδο διατηρούν ξεχωριστές θέσεις για ανάγνωση και για εγγραφή.</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stream_states&amp;rev=1622530552&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-01T06:55:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stream_states</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stream_states&amp;rev=1622530552&amp;do=diff</link>
        <description>Έλεγχος της εσωτερικής κατάστασης του stream

Κάθε stream διαθέτει μία σειρά από flags που ενημερώνουν για την κατάσταση του. Τα flags αυτά αποθηκεύονται στην μεταβλητή</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:strings&amp;rev=1619498756&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-27T04:45:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>strings</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:strings&amp;rev=1619498756&amp;do=diff</link>
        <description>Αλφαριθμητικά

Τα αλφαριθμητικά μπορούν να αναπαρασταθούν με δύο τρόπους

	*  Μέσω μιας ακολουθίας χαρακτήρων που περιέχει το χαρακτήρα '\0' στο τέλος.</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stringstreams&amp;rev=1558468142&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-05-21T19:49:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stringstreams</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:stringstreams&amp;rev=1558468142&amp;do=diff</link>
        <description>String streams

Εκτός από τις κλάσεις για ανάγνωση ή εγγραφή από αρχείο ή τα stdin και stdout η standard βιβλιοθήκη της C++ παρέχει κλάσεις για ανάγνωση και εγγραφή από ένα</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:templates&amp;rev=1590860750&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-30T17:45:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>templates</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:templates&amp;rev=1590860750&amp;do=diff</link>
        <description>Templates

	*   Templates συναρτήσεων
	*   Templates κλάσεων
	*   Εξειδίκευση ενός template

Στα παραδείγματα που ακολουθούν χρησιμοποιούμε τη βοηθητική κλάση Student που δίνεται παρακάτω:



#ifndef _STUDENT_HPP_
#define _STUDENT_HPP_
#include&lt;cstring&gt;

class Student {
  char *name;
  int aem;
  
public:
  Student(const char *name, int aem);
  Student();
  Student(const Student&amp; );
  Student(const Student* );
  ~Student();
  char *getName() const;
  int getAEM() const;
  void setName(const char…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:this&amp;rev=1586356334&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-04-08T14:32:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>this</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:this&amp;rev=1586356334&amp;do=diff</link>
        <description>Ο δείκτης this

Κατά τον ορισμό συναρτήσεων της κλάσης θέλουμε συχνά να αναφερθούμε στο αντικείμενο καλεί τη συγκεκριμένη μέθοδο. Ο τελεστής χρησιμοποιείται</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:toc&amp;rev=1685473702&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-30T19:08:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>toc</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:toc&amp;rev=1685473702&amp;do=diff</link>
        <description>Περιεχόμενα C++

	*  Βασικοί τύποι δεδομένων
	*  Σταθερές - Κυριολεκτικά
	*   Τελεστές
	*   Βασική είσοδος και έξοδος
	*  Πίνακες
	*  Δείκτες
		*  Δείκτες αμετάβλητου περιεχομένου και αμετάβλητης διεύθυνσης

	*  Αναφορές (References)
	*   Αλφαριθμητικά
		*   Η κλάση std::string

	*  Δυναμική διαχείριση μνήμης
	*   Συναρτήσεις 
	*   Namespaces
	*   Κλάσεις και Αντικείμενα
		*   Κατασκευαστές της κλάσης
			*   Default κατασκευαστής
			*  Υπερφόρτωση κατασκευαστών
			*   Χρήση member initialization…</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading&amp;rev=1621838114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-24T06:35:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vector_overloading</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading&amp;rev=1621838114&amp;do=diff</link>
        <description>Παράδειγμα υπερφόρτωσης τελεστών

Ας υποθέσουμε ότι έχουμε την παρακάτω κλάση Vector η οποία υλοποιεί ένα μονοδιάστατο πίνακα από ακεραίους.</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_binary_operators&amp;rev=1621838576&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-24T06:42:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vector_overloading_binary_operators</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_binary_operators&amp;rev=1621838576&amp;do=diff</link>
        <description>Υπερφόρτωση δυαδικών τελεστών που μπορούν να υλοποιηθούν ως μέλη της κλάσης ή ως φιλικές συναρτήσεις

Ο παρακάτω πίνακας περιγράφει τη λειτουργία της υπερφόρτωσης των τελεστών για το παράδειγμα της κλάσης</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_binary_operators2&amp;rev=1621838734&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-24T06:45:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vector_overloading_binary_operators2</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_binary_operators2&amp;rev=1621838734&amp;do=diff</link>
        <description>Υπερφόρτωση δυαδικών τελεστών μπορούν να υλοποιηθούν μόνο ως μέλη της κλάσης

Σε αυτή την ενότητα, θα δούμε παραδείγματα υπερφόρτωσης, τα οποία μεταβάλλουν τον αριστερό τελεστέο και μπορούν να υλοποιηθού</description>
    </item>
    <item rdf:about="http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_unary_operators&amp;rev=1621838326&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-24T06:38:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vector_overloading_unary_operators</title>
        <link>http://courses.e-ce.uth.gr/ECE326/doku.php?id=cpp:vector_overloading_unary_operators&amp;rev=1621838326&amp;do=diff</link>
        <description>Υπερφόρτωση μοναδιαίων τελεστών (unary operators)

Ο παρακάτω πίνακας περιγράφει την υπερφόρτωση των τελεστών στο παράδειγμα της κλάσης Vector που ακολουθεί.</description>
    </item>
</rdf:RDF>
