C++ pointer & reference ερωτηση
Nikos Platis
nplatis at freemail.gr
Mon Dec 1 20:51:12 EET 2008
O/H Θοδωρής Λύτρας έγραψε:
> Κατάλαβα, ευχαριστώ, καλύφθηκα! Το δοκίμασα κιόλας.
> Ο compiler τα μεταφράζει στον ίδιο ακριβώς κώδικα μηχανής.
>
> Μάλιστα τροποποίησα ελαφρώς το παράδειγμά σου για να είναι ακριβώς το ίδιο με
> αυτό που αντιμετωπίζω εγώ:
>
> -----
> #include <iostream>
> using namespace std;
> class A { public: int x; A() : x(5) {} };
> void print(A &a) { cout << a.x << endl; }
> int main() { A * a = new A; print(*a); delete(a); }
> -----
> #include <iostream>
> using namespace std;
> class A { public: int x; A() : x(5) {} };
> void print(A *a) { cout << a->x << endl; }
> int main() { A * a = new A; print(a); delete(a); }
> -----
>
> και φυσικά το αποτέλεσμα είναι και πάλι ίδιο.
>
> Επομένως δεν υπάρχει overhead από το dereferencing του pointer και το πέρασμα
> του αντικειμένου ως reference. Επομένως η χρήση (και μίξη) pointer και
> reference συνάγω οτι είναι θέμα στυλιστικό μόνο.
>
> Και πάλι ευχαριστώ,
>
> Θοδωρής
>
>
Απλώς να πω ότι σε τόσο απλά προγράμματα ο compiler μπορεί εύκολα να
βρει βελτιστοποιήσεις, ενώ σε μεγάλα - πολύπλοκα προγράμματα μπορεί αυτό
να μην είναι δυνατό. Δεν λέω απαραίτητα ότι αυτό συμβαίνει ή δεν
συμβαίνει στην περίπτωση αναφοράς/δείκτη, όμως ένα τόσο απλό πρόγραμμα
δεν είναι πάντα αντιπροσωπευτικό μίας πραγματικής κατάστασης.
Νίκος
--
-----------------------------------------------------------------------
Nikos Platis e-mail: nplatis at freemail.gr
"The empires of the future are the empires of the mind." - W. Churchill
-----------------------------------------------------------------------
More information about the Linux-greek-users
mailing list