void some_func(int param = get_default_param_value());
cevap
Varsayılan parametre, tüm ifade kümesinin bir alt kümesi olabilir. Derleme zamanında ve varsayılan parametrenin beyan edildiği yerde ciltlenmiş olmalıdır. Bu, bir işlev çağrısı veya bir statik yöntem çağrısı olabileceği anlamına gelir ve sabitler ve/veya genel değişkenler veya statik sınıf değişkenleri, ancak üye öznitelikleri değil, herhangi bir sayıda bağımsız değişken alabilir.
Derleme zamanında ve işlevin bildirildiği yerde bağlanmış olması, bir değişkeni kullanırsa, farklı bir değişkenin orijinali orjinalinde gölgelemesi durumunda bile bu değişkenin kullanılacağı anlamına gelir. işlev çağrısı.
// Code 1: Valid and invalid default parameters
int global = 0;
int free_function(int x);
class Test
{
public:
static int static_member_function();
int member_function();
// Valid default parameters
void valid1(int x = free_function(5));
void valid2(int x = free_function(global));
void valid3(int x = free_function(static_int));
void valid4(int x = static_member_function());
// Invalid default parameters
void invalid1(int x = free_function(member_attribute));
void invalid2(int x = member_function());
private:
int member_attribute;
static int static_int;
};
int Test::static_int = 0;
// Code 2: Variable scope
int x = 5;
void f(int a);
void g(int a = f(x)); // x is bound to the previously defined x
void h()
{
int x = 10; // shadows ::x
g(); // g(5) is called: even if local x values 10, global x is 5.
}
Olmak zorunda değiller! Varsayılan bir parametre, belirli sınırlamalar içinde herhangi bir ifade olabilir. Fonksiyon her çağrıldığında değerlendirilir.
- 1. C# CSS özelliklerinde ve değerlerinde sabit değerler var mı?
- 2. Boş değerler için varsayılan değerler
- 3. Emacs uzantıları olmalı mı?
- 4. Varsayılan yapıcı olmadan varsayılan değerler
- 5. Sabit dizgeyi char * cinsinden char * cinsinden nasıl ayırt edersiniz
- 6. C# cinsinden sabit boyutlu bayt dizisi kullanıcı türünü nasıl yapabilirim?
- 7. haskell cinsinden sabit uzunlukta dairesel tampon
- 8. Sabit değerler hızlı bir şekilde nerede saklanır?
- 9. Protokol uzantılarında varsayılan değerler
- 10. Enumlar, örtüşen değerler, C#
- 11. Boost (C++) cinsinden fonksiyonlar
- 12. Değeriyle C cinsinden geçirin #
- 13. Android'de kaynak türleri için sabit değerler
- 14. Raylardaki modeller için varsayılan değerler
- 15. Bir klişedeki varsayılan değerler Yapı
- 16. Polimorfizm ve varsayılan değerler: birlikte olabilir mi?
- 17. Oyun dizisi. C# cinsinden (genel) T?
- 18. Özel ondalık cinsinden yuvarlama C#
- 19. Para birimi cinsinden görüntülenme C#
- 20. C++ cinsinden tip silme nedir?
- 21. İşlev varsayılan bağımsız değişkenleri ve adlandırılmış değerler
- 22. C Projesi Varsayılan Dizin Düzeni var mı?
- 23. Constexpr neden statik olmalı?
- 24. Swift: ViewModel bir yapı mı yoksa sınıf mı olmalı?
- 25. C cinsinden saniye cinsinden geçen süre nasıl alınır? (Windows)
- 26. OCaml: Fonksiyon argümanları için varsayılan değerler?
- 27. 'Sistem verileri' bir veritabanında mı olmalı?
- 28. Qt'ın nesnelerinin adları benzersiz olmalı mı?
- 29. Bir vektöre R vektörü 10 cinsinden değerler nasıl atanır?
- 30. Parametrelerde değer olmadığında ssrs cinsinden tablodaki tüm değerler nasıl iletilir?
Sorunların iyi bir şekilde açıklanması için çok teşekkürler. –
Küresel değişkenlere başvurabileceğinizi anlayamadım. Http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/cplr237.htm ve http: // msdn adresindeki iyi kaynaklar. microsoft.com/en-us/library/e1dbzf09(VS.80).aspx. –
Ayrıca, bir işlev işaretçisi aracılığıyla bir çağrı olabilir, yani. eğer foo (int arg = (* fp)()); Burada, fo'nun ilan edildiği fp'ye bakılır, ancak foo() her çağrıldığında fp değerlendirilir. – MSalters