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

  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013