Junior
213
Πώς ονομάζεται η εναλλακτική για τη μεταβίβαση τιμών αντί για αναφορές σε C/C++;
Απάντηση από AI
sobes.tech AI
Μεταφορά τιμής χρησιμοποιώντας αναφορές σε σταθερά αντικείμενα.
void process_value(const MyObject& obj) {
// Δουλεύουμε με το obj σαν να είχε μεταβιβαστεί με τιμή
// (οι αλλαγές είναι αδύνατες χάρη στο const),
// αλλά αποφεύγουμε την αντιγραφή ενός μεγάλου αντικειμένου.
// Αυτή η λειτουργία ΔΕΝ ΜΠΟΡΕΙ να αλλάξει την κατάσταση του αντικειμένου στο οποίο αναφέρεται το obj.
}
// Παράδειγμα χρήσης:
MyObject large_object;
process_value(large_object); // large_object δεν αντιγράφεται
Πλεονεκτήματα σε σύγκριση με τη μεταφορά με τιμή:
- Αποφεύγει δαπανηρή αντιγραφή μεγάλων αντικειμένων, βελτιώνοντας την απόδοση.
- Διατηρεί τη σημασιολογία της μεταφοράς με τιμή όσον αφορά την αμεταβλητότητα μέσα στη λειτουργία.
Μειονεκτήματα σε σύγκριση με τη μεταφορά με τιμή:
- Απαιτεί ειδική σύνταξη
const &στη υπογραφή της λειτουργίας. - Αν το αντικείμενο είναι πολύ μικρό (π.χ., τύπος πρωτογενούς τύπου
int), η μεταφορά με τιμή μπορεί να είναι ταχύτερη λόγω πιθανών εξόδων απο-δείκτης.