Sobes.tech
Junior — Middle

Γίνεται άμεση αντιγραφή αντικειμένων τύπου αναφοράς κατά την ανάθεση;

sobes.tech AI

Απάντηση από AI

Σε γλώσσες προγραμματισμού με διαχείριση μνήμης, όπως η Swift ή η Objective-C, κατά την ανάθεση μιας μεταβλητής τύπου αναφοράς, αντιγράφεται η αναφορά, όχι το ίδιο το αντικείμενο. Δηλαδή, το αντικείμενο δεν αντιγράφεται άμεσα, αλλά και οι δύο μεταβλητές αρχίζουν να δείχνουν στο ίδιο αντικείμενο στη μνήμη.

Για παράδειγμα, στη Swift:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

let person1 = Person(name: "Alice")
let person2 = person1 // Αντιγράφεται η αναφορά, όχι το αντικείμενο
person2.name = "Bob"
print(person1.name) // Θα εμφανίσει "Bob", καθώς το person1 και το person2 δείχνουν στο ίδιο αντικείμενο

Έτσι, δεν πραγματοποιείται άμεση αντιγραφή του αντικειμένου, μόνο η αναφορά σε αυτό αντιγράφεται.