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