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

V13 v13 at v13.gr
Mon Dec 1 19:06:18 EET 2008


On Monday 01 December 2008, Theodore Lytras wrote:
> Θα ήθελα να ρωτήσω κάτι συγκεκριμένο (πάντα με την υποσημείωση οτι
> είμαι ερασιτέχνης στον προγραμματισμό):
>
> Έχω σε κάποιο σημείο του κώδικά μου έναν δείκτη σε ένα αντικείμενο της
> κλάσης foo, και δουλεύω πάνω στο δείκτη.
> Θέλω να περάσω το αντικείμενο αυτό σε μια μέθοδο myMethod, η οποία
> δέχεται *αναφορά* σε αντικείμενο της κλάσης foo.
> Είναι προφανές οτι θα πρέπει να κάνω dereference τον δείκτη μου
> (βάζοντας το αστεράκι αριστερά), και να περάσω το αντικείμενο.
>
> Αυτό που θέλω να ρωτήσω είναι αν αυτό το operation έχει κάποιο overhead.
> Μήπως είναι καλύτερα να φτιάξω την μέθοδο myMethod να δέχεται (και να
> δουλεύει με) δείκτη σε αντικείμενο foo? (Αφού ούτως ή άλλως στην
> καλούσα συνάρτηση δουλεύω με δείκτη). Και έτσι να περνάω κατευθείαν
> τον δείκτη?
> Ή δεν έχει σημασία από άποψη απόδοσης/efficiency?

Kata 99% exoyn akribos to idio apotelesma mexri teleytaioy bit, ektos kai an 
exeis kanei overload kapoion apo toys operator &, operator *.

Mporeis na to deis kai kanontas compile ta dyo parakato programmata:

-----
#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; print(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; print(&a); }
-----

kai meta strip kai sygkrisi:

$ g++ a.cc -o a
$ g++ b.cc -o b
$ strip a b
$ diff a b && echo Same
Same

> Και από πλευράς programming style?
> Μήπως είναι καλύτερα να χρησιμοποιώ μόνο δείκτες στον κώδικά μου, ή
> μόνο αναφορές? Μήπως είναι "μπερδευτικός" ο κώδικας όταν μπλέκουν τα
> δύο?

Nai einai. Ean den exeis sobaro logo na xrhsimopoieis pointers kai ean h oli 
logiki soy den stirizetai se pointers, tote min to kaneis. Synithos osoys 
pointers exeis tha synexiseis na toys xrhsimopoieis san pointers sto 
megalitero meros toy kodika.

Prosopika m'aresoyn oi pointers giati einai ksekatharo to ti einai ti, alla 
ayto einai ena allo thema kai yparxoyn poly isxyra antitheta epixirimata.

> Μπορούμε να διατυπώσουμε μερικές αρχές για το πως είναι ωραιότερο να
> χρησιμοποιούμε το ένα ή το άλλο (χωρίς να μπλέξουμε σε pointers vs.
> references flamewar).

Mallon dyskolo.

<<V13>>




More information about the Linux-greek-users mailing list