SORU
7 Aralık 2008, Pazar


Miras kurucular

Neden bu kod yok:

class A
{
    public: 
        explicit A(int x) {}
};

class B: public A
{
};

int main(void)
{
    B *b = new B(5);
    delete b;
}

Bu neden hatalar:

main.cpp: In function ‘int main()’:
main.cpp:13: error: no matching function for call to ‘B::B(int)’
main.cpp:8: note: candidates are: B::B()
main.cpp:8: note:                 B::B(const B&)

B private miras gerekmez mi?

(bu gcc kullanıyor)

CEVAP
12 Ocak 2009, PAZARTESİ


C 03 standart kurucular miras olamaz ve kendi tabanı uygulaması çağırarak onları tek elle tek miras. Eğer derleyici C 11 standardını destekliyorsa, yapıcı bir miras var. Daha fazlası için Wikipedia C 11 article bkz. Yeni standart ile yazmak:

class A
{
    public: 
        explicit A(int x) {}
};

class B: public A
{
     using A::A;
};

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • IGN

    IGN

    19 EYLÜL 2006
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009