15 HAZİRAN 2009, PAZARTESİ
Statik alanlar devralınmıştır?
Statik üyeleri tüm hiyerarşi için statik miras aldıkları, ya da sadece o sınıfın, yani:
class SomeClass
{
public:
SomeClass(){total ;}
static int total;
};
class SomeDerivedClass: public SomeClass
{
public:
SomeDerivedClass(){total ;}
};
int main()
{
SomeClass A;
SomeClass B;
SomeDerivedClass C;
return 0;
}
toplam her üç durumda 3 olurdu, veya SomeDerivedClass
SomeClass
ve 1 için 2 olur?
CEVAP
15 HAZİRAN 2009, PAZARTESİ
Cevap aslındadörtSomeDerivedClass
inşasından bu yana her durumda, toplam artan neden oluriki kez.
Burada tam bir program cevabım doğrulamak için kullandığı):
#include <iostream>
#include <string>
using namespace std;
class SomeClass
{
public:
SomeClass() {total ;}
static int total;
void Print(string n) { cout << n << ".total = " << total << endl; }
};
int SomeClass::total = 0;
class SomeDerivedClass: public SomeClass
{
public:
SomeDerivedClass() {total ;}
};
int main(int argc, char ** argv)
{
SomeClass A;
SomeClass B;
SomeDerivedClass C;
A.Print("A");
B.Print("B");
C.Print("C");
return 0;
}
Ve sonuçları:
A.total = 4
B.total = 4
C.total = 4
Bunu Paylaş:
Neden Arabirimleri, ama statik alanlar...
Bir sınıf statik alanlar ve yöntemler ...
Java boş bir başvuru statik alanlar...
Java - Neden bir arayüz tüm alanlar do...
Statik içerik her zaman C tek#?...