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

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • Gimpology.com Video Tutorials

    Gimpology.co

    3 ŞUBAT 2008
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012