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