Programda değiştirilecek ve korunacak bir sınıf için verileriniz varsa, ancak yalnızca bir üye işlevinde kullanılıyorsa, bu değişkeni yerel bir statik değişkeni yapmak tercih edilir. rutin mi, yoksa sınıfın bir üyesi mi?statik değişkene karşı üye
cevap
Soru "veriler program boyunca kullanılacak" değil, "bu sınıfın iki nesnesini yaparsanız, bu verileri paylaşmalarını ister misiniz?" Evet ise, statik yapınız. Hayırsa, yapma.
Çoğu durumda, hiçbir zaman bir yerel statik değişken kullanmamalısınız ve bunun yerine bir statik üye değişkeni kullanmanız gerektiğini iddia ediyorum. Daha sonra soru, bu değişkenin sınıf örnekleri arasında paylaşılıp paylaşılmayacağı üzerine dejenere olur.
Yerel bir değişkenin statik olarak bildirilmesi, yönteminizin artık nesnenin durumundan ayrı bir duruma sahip olduğu anlamına gelir. Bu kodu korurken (kopya kurucu uygulaması, atama, serileştirme gibi) ve okurken (hatalar metot davranışı) birçok hataya yol açabilir.
Bazı iyi nedenleriniz olmadıkça statik yerliler kullanmaktan kaçının (tek düşünebildiğim tek iş parçacıklı tekil uygulama).
- 1. statik değişken üye değişkenleri?
- 2. Statik üye,
- 3. statik üye işlevleri devralma
- 4. sınıf statik üye değişkenler
- 5. Korumalı statik üye değişkenleri
- 6. Yansıma kullanarak statik son değişkene erişme
- 7. Başka bir sınıftan statik değişkene erişme
- 8. Statik olmayan üye işlev erişimi statik üye işlevi veya verileri olabilir mi?
- 9. Statik üye değişken başlatıcıda neden statik üye işlevi (global olan değil) denir?
- 10. Statik üye işlevi sınıf şablonu uzmanlığı içinde
- 11. std :: statik olmayan üye işlevleri olan işlev
- 12. statik üye işlevi shared_ptr öğesinin make_shared'i
- 13. Statik üye ne zaman kayıt alır
- 14. C++ Statik üye işaretçisi işlevi - nasıl başlatılır?
- 15. Üye şablon statik işlevi için yazım özniteliği
- 16. Statik üye değişkenleri nesne boyutunu nasıl etkiler?
- 17. C++ 'da statik üye bir kapsayıcıyı doldurun
- 18. Bir alt sınıf sınıfının statik üye değişkeni
- 19. Statik Üye Protokolü Metatype Swift üzerinde kullanılamaz
- 20. JavaScript sınıfında değişkenler bildirme: bu, değişkene karşı. Fark?
- 21. Denetleyici sınıfındaki DbContext örneğine karşı Global.asax'ta DbContext statik alanı?
- 22. işlev işaretçileri 'statik olmayan üye işlevinin geçersiz kullanımını' üretir
- 23. G ++ -Wshadow, statik üye gölgelemesi hakkında uyarı vermiyor
- 24. Statik yöntem içinde bir sınıfın üye değişkenlerini nasıl arayabilirim?
- 25. üye başlatıcısı, statik olmayan bir veri üyesi veya
- 26. Herhangi bir üye çağırmadan statik yapıcıların çağrılması nasıl sağlanır
- 27. Clang ++ Xcode 4.4 Statik Olmayan Üye Başlatma ve Taşıyıcı Oluşturucu
- 28. kullanın std :: fonksiyon sarmak için statik olmayan üye işlev işaretçisi
- 29. thread_local statik üye şablon tanımı: gc ile başlatılamadı
- 30. üye
Teşekkürler. Sınıf üyesi işlevlerdeki yerel statik değişkenlerin bile bu sınıfın tüm nesneleri tarafından paylaşıldığını unutmuşum. – Anonymous