Наследование классов

Тема в разделе "C и С++ FAQ", создана пользователем olimp72, 1 сен 2011.

  1. olimp72

    olimp72 New Member

    Регистрация:
    1 сен 2011
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте.
    Помогите пожалуйста решить проблему по наследованию классов.

    Есть базовый класс
    class parent
    {
    protected:
    int x;
    public:
    void Fill() { x = 5; }
    void Show() { cout<<x<<endl;}
    };
    Класс-потомок
    class child : public parent
    {
    public:
    void Show_ () { cout<<x<<endl;}
    };

    parent parent1;
    child child1;
    int main()
    {
    parent1.Fill();
    parent1. Show(); // Выводит 5
    child1. Show_(); // Выводит 0. Почему так?
    return 0;
    }
    Спасибо.
     
  2. vol4ek88

    vol4ek88 Гость

    Наследование в C++:
    class A{ //базовый класс
    };

    class B : public A{ //public наследование
    }

    class C : protected A{ //protected наследование
    }

    class Z : private A{ //private наследование
    }

    В C++ существует три типа наследования: public, protected, private. Спецификаторы доступа членов базового класса меняются в потомках следующим образом:



    Если класс объявлен как базовый для другого класса со спецификатором доступа public, тогда public члены базового класса доступны как public члены производного класса, protected члены базового класса доступны как protected члены производного класса.

    Если класс объявлен как базовый для другого класса со спецификатором доступа protected, тогда public и protected члены базового класса доступны как protected члены производного класса.

    Если класс объявлен как базовый для другого класса со спецификатором доступа private, тогда public и protected члены базового класса доступны как private члены производного класса.
     
  3. vol4ek88

    vol4ek88 Гость

    пример наследования

    #include <stdio.h>
    #include <string.h>

    class A
    {
    public:
    void f1 ()
    { printf("class A, f1");

    };
    };

    class B:A
    {
    public:
    int a;
    B () { printf ("Constructor!\n");
    a = 10;
    };


    void f1 ()
    {
    printf("class B, f1, %d", a);
    };
    };

    void main(int argc, char * argv[])
    {
    A a;
    B b;
    B* b1;
    b1=&b;
    b1->f1();
    a.f1();
    }
     
Загрузка...
Похожие Темы - Наследование классов
  1. Dragon108
    Ответов:
    23
    Просмотров:
    5.532
  2. vladis222
    Ответов:
    4
    Просмотров:
    1.621
  3. vladis222
    Ответов:
    4
    Просмотров:
    1.926
  4. Stashevckiy
    Ответов:
    10
    Просмотров:
    3.161
  5. xKlonx
    Ответов:
    2
    Просмотров:
    3.457

Поделиться этой страницей