0
Bir A sınıfıneden C++ aşağıdaki durumda bir kurucu oluşturur? Yaparsam
struct A{
A(){}
A(int x): d(x) {}
A(const A& a): d(a.d) {
std::cout << "copy construction" << std::endl;
}
A(A&& a): d(a.d){
std::cout << "move construction" << std::endl;
}
A& operator=(const A& a){
std::cout << "copy assignment" << std::endl;
d = a.d;
return *this;
}
A& operator=(A&& a){
std::cout << "move assignment" << std::endl;
d = a.d;
return *this;
}
int d;
};
ve fonksiyon fonk
A func(){
return A(3);
}
sahip bu
A x;
x = func();
çıkış beklendiği gibi "hareket ataması" ama inşa eğer Bunun gibi bir
A x = func();
o zaman C++ kendi taşıma kurucusunu oluşturur ve tanımlı olanı kullanmayı reddederse hiçbir şey yazdırılmaz.
Ben gerçekten bunu anlamak istiyorum görsel stüdyo 14
kullanıyorum.
Açıklamalarınız için teşekkür ederiz.
Güzel ve basit. – erip
Birleştirilmiş olarak mı seçildi? Veya derleyici optimizasyonunun bir parçası olarak tamamen mi atılıyor? – CinCout
hm tamam Bu davranış hakkında bilmiyordum – bakkaa