SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fuse

    Fuse

    21 Kasım 2005
  • Hak5

    Hak5

    7 EYLÜL 2005
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006