Junior — Middle
Proqramlaşdırma dilində obyekt üçün kopyalama qurucusunun çağırılması hansı hallarda baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
C++ dilində, köçürmə qurucusu aşağıdakı hallarda çağrılır:
-
Eyni növ obyektlə başqa bir obyektlə başlanğıc verilərkən, məsələn:
MyClass a; MyClass b = a; // köçürmə qurucusunun çağrılması -
Ob'ekt dəyər kimi funksiyaya ötürülərkən:
void func(MyClass obj) { /*...*/ } func(a); // çağırış zamanı obyektin kopyası -
Funksiyadan dəyər kimi obyekt geri qaytararkən:
MyClass func() { MyClass temp; return temp; // geri qaytararkən kopya } -
Eyni növ obyektə təyin edilərkən (əgər təyin etmə operatoru istifadə olunmayıbsa):
b = a; // burada təyin etmə operatoru çağrılır, köçürmə qurucusu deyil
Əhəmiyyətlidir ki, müasir tərtibçilər kopyalamağı optimallaşdıra bilərlər (Copy Elision), lakin konseptual olaraq, köçürmə qurucusu bu vəziyyətlərdə çağrılır.