C++ pointer & reference ερωτηση

Nikos Platis nplatis at uop.gr
Mon Dec 1 20:50:55 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
Lecturer                                    http://www.uop.gr/~nplatis/
University of Peloponnese                        email:  nplatis at uop.gr
Department of Computer Science and Technology      tel: +30 2710 372264
-----------------------------------------------------------------------
"The empires of the future are the empires of the mind." - W. Churchill
-----------------------------------------------------------------------
                New Textbook:  Graphics & Visualization
           http://www.akpeters.com/product.asp?ProdCode=2744
-----------------------------------------------------------------------




More information about the Linux-greek-users mailing list