Thread overview
NonCopyable sınıftan miras alma
Jul 23, 2018
hsencan
Jul 23, 2018
hsencan
Jul 23, 2018
hsencan
July 23, 2018

Merhabalar,

Githubda kod inceliyordum. Bir yazılımcının şu şekilde sınıf tasarladığını gördüm.

struct NonCopyable
{
	NonCopyable() = default;
	NonCopyable& operator=(const NonCopyable&) = delete;
	NonCopyable(const NonCopyable&) = delete;
};

ve bu sınıfı farklı sınıflarda kalıtım almış. Ben de anlamadım açıkçası nedenini. Araştırdığım zamanda bulamadım. Acaba bu benim bilmediğim idiom gibi birşey mı ? Yoksa sadece yazan kişinin yazım şeklimi ?

İyi Çalışmalar.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2018

Peki hocam şöyle bir sınıf daha tasarlasak oda "NoneMovable" olsa ama o sınıfta copy constructer ve copy assignment operatorü silmesek ve iki sınıftan da miras alsak hem NoneMovable hem de NonCopyable olur mu ? Yoka NoneMovable sınıfında copy işlemlerini silmediğimiz için sadece NoneMovable'mı olur.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2018

Teşekkürler hocam. Mobildim cevabınızı okurken aklıma takldı soriyim dedim. Pc başına geçince hemen deniyeceğim :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2018

Bazen sınıfın kopyalanması olanaksızdır, kopyalanmasının desteklenmesi gereksizdir (örneğin fazla karmaşık olabilir), veya nasıl kopyalanacağının kodlanması gerçekten gerekene kadar ertelenebilir. O gibi durumlarda bu işlevler tanımlanmazlar ama private olarak bildirilirler. Evet, bu bir idiom (idi)...

C++ bir noktadan sonra bu işin daha kullanışlı olması için '= delete' yazımını getirdi. Bu biçimde bildirilen işlevler çağrılamazlar.

Bu işi her sınıfta ayrı ayrı yapmak yerine, NonCopyable gibi bir türden türetmek daha da iyi oluyor çünkü adından tam da ne istediğimiz anlaşılıyor. (Üst sınıfın işlemleri alt sınıf tarafından otomatik olarak çağrıldıklarından, bu işlemlerin yasaklandığı bir sınıftan türetmek, o işlemleri türeten sınıf için de yasaklıyor.)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2018

Ben hiç düşünmemiştim ama bu noktada senin denemen gerekmiyor mu? ;) Başkalarının da aklına gelmiş:

https://stackoverflow.com/questions/35743586/noncopyable-and-nonmovable-together

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]