Sınıf içinde statik değişken yöntemleri
Lütfen statik yöntem değişkenler C nasıl çalıştığını açıklamak ... eğer şu Dersim var eğer biri olabilir:
class A {
void foo() {
static int i;
i ;
}
}
Eğer birden çok örneğini açıklıyorum, foo arama yapar() tüm örneklerine bir örnek üzerinde artış statik değişken miyim? Ya da adı üzerinde sadece bir tane mi?
Her örnek ben kendi kopyasını diye düşünmüştüm, ama ben bazı kod boyunca adım atma yoksa işaret gibi görünüyor.
Şerefe
CEVAP
3* *bu kelime ne yazık ki C kaç farklı alakasız bir anlamı vardır
Veri üyeleri için kullanılan veri demektirsınıfta ayrılmışve durumda değil.
Verileri statik olarak ayrılan bu demek oluyor ki, bir fonksiyon içinde veri için kullanılan zamanblok girilir ilk kez başlatıldıve program sonlandırılıyor kadar sürer. Aynı zamanda değişken işlev içinde görünür. Yerel statiği bu özellik genellikle tek tembel inşaat uygulamak için kullanılır.
Ne zaman kullanılan bir derleme birimi düzeyinde (modül) anlamına değişkendir gibi bir küresel (yani tahsis ve başlatılmadan önce
main
çalıştırın ve tahrip sonramain
çıkar) amadeğişken veya başka bir derleme birimleri erişilebilir görünmez.
Her kullanım için en önemli olan kısmı biraz ağırlık ekledim. Kullanımı (3) Ayrıca, BM tarafından verilen sınıf bildirimleri için izin veren isimsiz ad lehine biraz önerilmez.
Kodunuzda static
kelime anlamı numarasını 2 ile kullanılır ve sınıfları veya örnekleri ile bir ilgisi yok... bu bir değişken varişlevive sadece tek bir kopyası olacak.
Olarak doğruiammilindeğer işlevi bir şablon işlevi bu durumda gerçekten işlevi program içinde birçok farklı kopyaları mevcut olabilir çünkü), eğer birden fazla olabilir dedi bu değişkenin örnekleri. Hatta tabii ki bu durumda sınıfları ve örnekleri ilgisiz... örnek bkz:
#include <stdio.h>
template<int num>
void bar()
{
static int baz;
printf("bar<%i>::baz = %i\n", num, baz );
}
int main()
{
bar<1>(); // Output will be 0
bar<2>(); // Output will be 0
bar<3>(); // Output will be 0
bar<1>(); // Output will be 1
bar<2>(); // Output will be 1
bar<3>(); // Output will be 1
bar<1>(); // Output will be 2
bar<2>(); // Output will be 2
bar<3>(); // Output will be 2
return 0;
}
Varolan statik bir sınıf uzatma yöntem...
Olamaz bir iç sınıf içinde nihai olmay...
Bir C işlevi içinde statik bir değişke...
Uzatma yöntemleri genel olmayan statik...
Java, bir sınıf içinde numaralama türl...