SORU
17 Ocak 2009, CUMARTESİ


Yazma C başlık dosyaları içinde fonksiyon tanımlama

Birçok küçük functons olan bir Dersim var. Küçük fonksiyonları ile, herhangi bir işlem yapmaz fonksiyonları yani ama sadece edebi bir değeri döndürür. Gibi bir şey

string Foo::method() const{
    return "A";
}

Bir başlık dosyası "Foo.yarattım"kaynak dosya "". Foo.cpp h Ama işlevi çok küçük olduğundan, başlık koyarak kendisini dosya hakkında düşünüyorum. Şu soru var

  1. Eğer başlık dosyasında bu fonksiyonu defnition koyarsam orada herhangi bir performans veya başka bir sorun? Bu gibi birçok işlevi olacak.
  2. Benim anladığım derleme yapıldığında, derleyici başlık dosyasını genişletin ve dahil olduğu yer. Bu doğru mu?

CEVAP
17 Ocak 2009, CUMARTESİ


Eğer işlevi küçük (şansın değiştireceğini genellikle düşük), ve eğer işlevi olabilir sokar başlık olmadan da dahil olmak üzere takmasına diğer başlıklar (çünkü fonksiyon bağlıdır onlara), bu son derece geçerli. Eğer onları dışarıdan içi bildirirseniz, o zaman derleyici her derleme birimi için aynı adresi vermek gereklidir:

headera.h:

inline string method() {
    return something;
}

Üye fonksiyonları kendi sınıfı içinde tanımlanmış olmaları kaydıyla, örtülü satır içi. Eğer bir zorluk olmadan başlık koymak olup Olmadığını, gerçekten bunu yapabilirsiniz. aynı şeyleri onlara Gerçek için de geçerlidir:

Çünkü kodun işlevi konur başlığı ve görünür, derleyici olmak üzere içi aramalar için onları, yani koyarak kod işlevi doğrudan görüşme sitesi (çok değil çünkü Sen Koy içi daha önce, ama daha fazla çünkü derleyici karar verir bu şekilde olsa da. Tek satır içi koyarak ilgili derleyicisi) için bir ipucudur. Bu neden olabilir bir performans geliştirme, çünkü derleyici şimdi gördüğü argümanlar maç yerel değişkenler işlev ve burada tartışma yok takma birbirlerine - ve son ama en az değil, işlevi çerçeve ayırma değil ihtiyaç artık.

Benim anladığım derleme yapıldığında, derleyici başlık dosyasını genişletin ve dahil olduğu yer. Bu doğru mu?

Evet, bu doğru. İşlevi başlığını siz dahil her yerde tanımlanacaktır. Derleyici Diğerleri ortadan kaldırarak elde edilen programa yalnızca bir örneğini koyarak önemsiyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011