• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы olimp72
  • Дата начала Дата начала
O

olimp72

Здравствуйте.
Помогите пожалуйста решить проблему по наследованию классов.

Есть базовый класс
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;
}
Спасибо.
 
Наследование в 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 члены производного класса.
 
пример наследования

#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();
}
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab