1. C++ / Говнокод #8695

    +993

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    class A
    {
    public:
     int a;
     int getA(){return a;}
    };
    
    class B: public A
    {
    public:
     int b;
     int getB(){return b;}
    };
    
    class C: public A
    {
    public:
     int c;
     int getC(){return c;}
    };
    
    class D: public C, public B
    {
    public:
     D(): d(0) {}
     int d;
     int getD(){return d;}
    };
    
    int main()
    {
     D d;
     std::cout << d.getD();
    }

    Знакомый программист утверждает, что этот пример является примером "возможности ромбовидного наследования" в С++, совсем забывая, что этот замечательный язык генерирует ромбовидное наследование только при наследовании виртуальном, а пример не раскрывает проблему и наполовину.

    Запостил: ololo_trololo, 01 Декабря 2011

    Комментарии (14) RSS

    Добавить комментарий