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

  • michellefeng's channel

    michellefeng

    26 Kasım 2006
  • natescamp

    natescamp

    30 NİSAN 2009
  • Sam Kear

    Sam Kear

    14 Temmuz 2007