C Standart uzanan miras yoluyla Kütüphane? | Netgez.com
SORU
2 Temmuz 2009, PERÅžEMBE


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:

  1. Türetilen öngörülen diğer Standart Kütüphane sınıfları var mı?

  2. 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
2 Temmuz 2009, PERÅžEMBE


İ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. Bu std::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".

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Britec09

    Britec09

    4 Mart 2009
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • How To Cook That

    How To Cook

    16 NİSAN 2011