C Standart uzanan miras yoluyla Kütüphane?
C Standart Kütüphanesi genel olarak genişletilmesi için kalıtım kullanarak tasarlanmamıştır yaygın bir inançtır. Kesinlikle, ben (ve diğerleri) std::vector
gibi sınıflar türetmek iddia eden insanlar eleştirdiler. Ancak, bu soru: c exceptions, can what() be NULL? uzun olmak üzere Standart Kütüphanenin en az bir parçası olduğunu farketmemi sağladı - std::exception
.
Yani, benim soru iki bölümden oluşur:
Türetilen öngörülen diğer Standart Kütüphane sınıfları var mı?
Eğer bir tane varsa
std::exception
gibi Standart Kütüphane bir sınıf türetmek bir arayüz ISO standardında tanımlanan bağlı? Örneğin,what()
üye fonksiyonu bir NTBS iade etmeyen özel bir sınıf kullanılan bir program (null adresi ile geri döndü demek) uygun standart olurdu?
CEVAP
İyi güzel soru. Gerçekten Standart biraz daha açık olduğunu amaçlanan kullanımı hakkında diliyoruz. Belki dil standart yanında oturur C Mantığı bir belge olmalı. Her durumda, burada kullandığım yaklaşım
(a) böyle bir listenin varlığından haberdar değilim. Bunun yerine, aşağıdaki liste Standart Kütüphane bir tür miras olarak tasarlanan olma olasılığı olup olmadığını belirlemek için kullanın:
virtual
herhangi bir yöntem yok eğer doğru değilse, o zaman bir üs olarak kullanarak olmamalıdır. Bustd::vector
ve kuralları.- Eğer
virtual
yöntemler var ise, o zaman temel sınıf olarak kullanım için bir aday. - Eğer
friend
tabloların bir sürü etrafında yüzen varsa, o zaman muhtemelen saklama sorun olmadığı çok açık. - Eğer bir şablon varsa, o zaman daha yakın önce muhtemelen uzmanlık ile yerine özelleştirebilirsiniz beri miras bak.
- İlke tabanlı bir mekanizma (, *8 örneğin*) varlığı bir üs olarak kullanıyor olmanız gerekmez mi bu çok iyi bir ipucu olduğunu.
Ne yazık ki güzel bir kapsamlı bilmiyorum yasiyah ve beyazliste. Ben genellikle gut hissediyorum.
(b) LSP burada uygulamak istiyorum. Eğer biri sizin hariç what()
çağırırsa, o zaman gözlemlenebilir davranış std::exception
ile aynı olmalıdır. Gerçekten standartlara uygun bir konu olarak fazla doğruluk sorunu olduğunu sanmıyorum. Standart alt sınıflar için değiştirilebilir olduğunu gerektirmez. Gerçekten sadece bir< . em ^"en iyi uygulama".
Miras yoluyla bir numaralama uzanan...
Nasıl uyumlu hafıza sadece standart kü...
Nasıl dll (STL) Standart Kütüphane sın...
Java yansıma yoluyla miras kalan özel ...
Kütüphane için Python belgelerine stan...