C ++ 'da "serbest işlev" teriminin anlamı nedir?


98

Boost :: test belgelerini okurken "serbest işlev" terimiyle karşılaştım. Anladığım şey, özgür bir işlevin hiçbir şey döndürmeyen herhangi bir işlev olduğudur (Dönüş türü geçersizdir). Ancak daha fazla okuduktan sonra, serbest işlevlerin de herhangi bir argüman almadığı görülüyor. Ama emin değilim. Bunların hepsi benim varsayımlarım. Öyleyse, herhangi biri serbest işlevi tanımlayabilir mi?

Yanıtlar:


117

Terimi, serbest işlevi C ++ sadece üye olmayan fonksiyonları belirtmektedir. Üye işlev olmayan her işlev ücretsiz bir işlevdir.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function

Diyelim ki ana fonksiyonumuz farklı bir dosyada var ve içinde özgür bir fonksiyon çağırmamız gerekiyor, bu yüzden daha sonra ana dosyama ekleyeceğim başka bir dosyada serbest fonksiyonlara sahip olmak için ne yapmalıyım ?? Demek istediğim, orada özgür fonksiyonumun uygulandığı bir hpp dosyası yapmalı mıyım (statik satır içi fonksiyonlar olabilir)?
Joy

5
Genellikle bunları bir başlık dosyasında bildirir ve ayrı bir kaynak dosyasında uygularsınız (şablon işlevleri gibi bazı istisnalar dışında). O belirli konu hakkında yeni bir soru açmak daha iyi olur, böylece insanlar size daha fazla ayrıntıyla cevap verebilir vs.
Georg Fritzsche
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.