Tam teşekküllü sınıflarla kullanıldığında çoklu kalıtımla ilgili bir takım problemler vardır, fakat hepsi belirsizlik etrafında döner .
Belirsizlik birkaç farklı şekilde ortaya çıkıyor:
- Aynı alana sahip iki temel sınıfınız varsa
x
ve türetilmiş tür isterse x
ne elde eder?
- İki
x
değişkenin uyumsuz türleri varsa, onu çıkartabilirsiniz.
- Aynı tiplerse, onları aynı değişkende birleştirmeyi deneyebilirsiniz.
- Onları her zaman tuhaf tam isimler olarak gösterebilirsin.
- Aynı
f
imzalara sahip aynı işleve sahip iki temel sınıfınız varsa ve f
aranan biri aranırsa ?
- Ya iki temel sınıf başka bir ortak sanal atayı (elmas problemi) paylaşırsa?
- İşlev farklı ancak uyumlu imzalara sahipse?
- İki temel sınıf içeren bir sınıf oluşturduğunuzda, ilk temel sınıf yapıcısının hangisi ilk olarak adlandırılır? Öldürülen nesneyi yok ettiğinizde hangisi?
- Nesneyi belleğe yerleştirdiğinizde, tutarlı bir şekilde nasıl yaparsınız?
- Tüm bu vakaları 3 temel sınıfla nasıl ele alıyorsunuz? 10?
Bu, dinamik gönderim, yazım çıkarımı, örüntü eşleme ve daha az bildiğim diğer şeyler gibi görmezden gelir.
Özellikleri ya da Mix-in (veya arayüzler veya ...) özellikle tüm yapılar vardır sınırlamak belirsizlik yoktur, böylece bir türünün yetenekleri. Bunlar nadiren kendi şey kendileri. Bu, türlerin kompozisyonunun daha yumuşak olmasını sağlar çünkü iki değişken veya iki işlev yoktur ... bir değişken ve bir referans vardır; bir işlev ve bir imza. Derleyici ne yapılacağını bilir.
Alınan diğer yaygın yaklaşım, kullanıcının türünü bir kerede bir tane oluşturmaya (veya karıştırmaya) zorlamaktır. Temel sınıfların yeni türdeki eşit ortaklar yerine, bir türü diğerine eklersiniz - orada olan herhangi bir şeyi geçersiz kılar (genellikle geçersiz kılma bitlerini yeniden adlandırmak ve / veya yeniden göstermek için isteğe bağlı sözdizimi ile).
Mixins / özelliklerle mümkün olmayan ancak C ++ tarzı çoklu kalıtım ile mümkün olan bir şey var mı?
Dile bağlı olarak - genellikle birden fazla temel sınıftaki değişkenler için işlev ve depo uygulamalarını birleştirmek ve bunları türetilmiş tipte göstermek sıkıntılı veya imkansız hale gelir .
Onlarla elmas problemine rastlamak mümkün mü?
Bazen dilinize göre daha az ciddi değişiklikler olabilir, ancak genellikle hayır. Özelliklerin tamamı bu tür belirsizliği kırmaktır.