C++ pointer & reference ερωτηση
Giorgos Keramidas
keramida at ceid.upatras.gr
Mon Dec 1 20:47:05 EET 2008
On Mon, 1 Dec 2008 20:21:05 +0200, Θοδωρής Λύτρας <thlytras at gmail.com> wrote:
> Επομένως δεν υπάρχει overhead από το dereferencing του pointer και το
> πέρασμα του αντικειμένου ως reference. Επομένως η χρήση (και μίξη)
> pointer και reference συνάγω οτι είναι θέμα στυλιστικό μόνο.
Στο 99% των περιπτώσεων είναι επίσης `hint' στον compiler, που μπορεί να
τον βοηθήσει να καταλάβει καλύτερα ότι δε θέλεις να κάνεις pointer tricks.
Έτσι μπορεί να κάνει πιο εύκολα κάποια optimizations.
Επίσης μπορεί επίσης να σε γλιτώσει από κάτι σαν:
void
foo(Type *x)
{
assert(x != NULL);
if (x->lala)
bar(x);
}
void
bar(Type *x)
{
assert(x != NULL);
x->lala += 1;
}
Εφόσον ξέρεις ότι ένα reference δε μπορεί ποτέ να είναι reference ενός
null pointer, δε χρειάζεσαι τα assert() και δε χρειάζεται ούτε κάποιο
runtime check για να δεις αν ένα pointer είναι NULL.
More information about the Linux-greek-users
mailing list