riak Δημοσ. 7 Ιουνίου 2009 Δημοσ. 7 Ιουνίου 2009 Μπορείται να μου πείτε ποιοι είναι οι default copy constructor και assignment operator στο παρακάτω κώδικα? > [b]public:[/b] [indent]Square(); Square(double); virtual ~Square(); double getSide() const; void setSide(double); [/indent]
fromaz Δημοσ. 7 Ιουνίου 2009 Δημοσ. 7 Ιουνίου 2009 Ο default copy constructor είναι αυτός που παράγει ο compiler σε περίπτωση που δεν ορίσεις εσύ έναν. Όπως αντιλαμβάνεσαι (?), δεν είναι δυνατόν να βρεις *default* copy constructor σε κώδικα. Για να είναι μια μέθοδος operator overloader θα πρέπει να φέρει το όνομα "operator" ακολουθούμενο από τον operator που κάνει overload. Όπως ξανα-αντιλαμβάνεσαι (?), από τη στιγμή που δεν υπάρχει αυτή η λέξη στον κώδικα που παρέθεσες, δεν μπορεί να υπάρξει και αυτό που ζητάς. Φιλική συμβουλή: Άλλαξε κατεύθυνση όσο είναι καιρός...
riak Δημοσ. 7 Ιουνίου 2009 Μέλος Δημοσ. 7 Ιουνίου 2009 Σε ευχαριστώ φίλε για την συμβουλή σου κ το χρόνο σου,αλλά όταν κάποιος έχει μια απορία δε σημαίνει ότι πρέπει να αλλάξει κ κατεύθυνση. Αυτά που μου είπες τα ήξερα ήδη,απλά ένα σχόλειο που είδα για αυτόν τον κώδικα με μπέρδεψε,κ προς στιγμή νόμισα ότι είχε κάτι σχετικό ο κώδικας που εγώ δεν το ήξερα!
bxenos Δημοσ. 7 Ιουνίου 2009 Δημοσ. 7 Ιουνίου 2009 Μπορείται να μου πείτε ποιοι είναι οι default copy constructor και assignment operator στο παρακάτω κώδικα? > [b]public:[/b] [indent]Square(); Square(double); virtual ~Square(); double getSide() const; void setSide(double); [/indent] Square(const Square& a); Square& operator =(const Square& a); πάντως και να μην τους ορίσεις εσύ, αν μπορέσει θα τους ορίσει ο compiler (ο compiler μπορεί να τους ορίσει, όταν όλα τα members έχουν τέτοιους). Αν δεν μπορέσει και ο compiler παλι δεν πειράζει, είναι warning. Δηλαδη δεν είναι απαραιτητο να υπάρχουν. Αν ομως στον κωδικα σου εχεις εντολή Square b; Square a = b; //εδω ζητάμε copy constructor, αρα πρέπει να υπάρχει Square c(; //εδω ζητάμε copy constructor, αρα πρέπει να υπάρχει Square a,b; a = b; //εδω ζητάμε assignment operator
riak Δημοσ. 8 Ιουνίου 2009 Μέλος Δημοσ. 8 Ιουνίου 2009 Σε ευχαριστώ πάρα πολύ bxenos!!Μου έλυσες κ την παραμικρή απορία-αμφιβολεία που είχα!
teo64x Δημοσ. 8 Ιουνίου 2009 Δημοσ. 8 Ιουνίου 2009 @fromaz, το παρόν section είναι, μεταξύ άλλων, και για ερωτήσεις.
dop Δημοσ. 10 Ιουνίου 2009 Δημοσ. 10 Ιουνίου 2009 @bxenos: αν ο compiler δε μπορεί να σου δώσει μια default συνάρτηση, τότε θα δώσει error όταν προσπαθήσεις να την καλέσεις. Για ποιο warning μιλάς;
bxenos Δημοσ. 10 Ιουνίου 2009 Δημοσ. 10 Ιουνίου 2009 @bxenos: αν ο compiler δε μπορεί να σου δώσει μια default συνάρτηση, τότε θα δώσει error όταν προσπαθήσεις να την καλέσεις. Για ποιο warning μιλάς; Δεν είπα κάτι διαφορετικό Αν δεν μπορέσει και ο compiler παλι δεν πειράζει' date=' είναι warning.Δηλαδη [b']δεν είναι απαραιτητο να υπάρχουν[/b]. Αν ομως στον κωδικα σου εχεις εντολή Square b; Square a = b; //εδω ζητάμε copy constructor, αρα πρέπει να υπάρχει π.χ. ο microsoft vs 2008 αν δεν μπορεί να φτιάξει copy constructor σε warning level 4 (ίσως και 3), θα βγάλει warning. Δεν είναι σφάλμα αν δεν έχεις καλέσει πουθενά τον copy constructor.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.