Aşağıda, farklı türdeki kuruculardan oluşan A sınıfı verilmiştir. Hareket edicisini yorumladığımda, kopya oluşturucuya iki kez çağrılır: bir kez nesneyi, işleve aynı işlevden dönen değer ve diğer işlevlerle geçirmesi için geçirir.Kurucu hem hareket hem de kopya oluşturulduğunda, hangisi çağrılacak?
Kod Parçacığı
sınıf A {
int x;
public :
A() {
cout<<"Default Constructor\n";
}
A(A&& a) : x(a.x){
cout<<"Move Constructor\n";
a.x=0;
}
A(const A& a){
x=a.x;
cout<<"Copy Constructor\n";
}
A fun(A a){
return a;
}
};
int ana() {
A a;
A b;
A c;
c=a.fun(b);
}
ÇIKIŞ: hareket yapıcı varsa
Default Constructor
Default Constructor
Default Constructor
Copy Constructor
Move Constructor
Bununla birlikte, daha çok kopya kurucu daha adlandırılır. Bunu iyi bir örnekle anlatabilir, böylece bu kavram üzerinde açık olacağım.
Yardımlarınız için minnettarım. Teşekkürler.
Bu kod ('c = a.fun (b)' de kullanılır) atama operatörü silindiği için derleme yapmaz. [Kod için bu işleçleri açıkça derlemek zorundasınız.] (Http://coliru.stacked-crooked.com/a/7194f49acb820000) – 0x499602D2
Benim için derledim. Ödev operatörlerini tanımlamak gerekli mi? – Gayathri