рекламная строчка Nolix

вторник, 19 января 2016 г.

О наследовании для начинающих программистов

  В этом посте приведен простой пример на языке с++, который помогает помять, что такое наследование. Здесь определены два класса - A и B, которые находятся в отношении наследования: класс B является дочерним по отношению к классу A.
  Поле данных в базовом (иначе говоря, родительском) классе только одно - это переменная целого типа a. В классе B вроде бы присутствует только одно поле данных - int b. Однако как раз суть наследования именно в том и заключается, что все члены базового класса являются также и членами дочернего класса. То есть int a является также и членом класса B. Членами класса B являются два одноименных метода Print(). Если метод Print() вызывается для объекта класса B, то по умолчанию подразумевается, что вызывается "родной" для класса B Print().
В противном случае используется оператор разрешения области видимости "::"



using namespace std;

class A
{
 protected:
int a;
 public:
A(int x){  a = x; }                         // конструктор
void Print() { cout << a << endl;};  // функция - член класса (выводит a)

class B: public A
{
int b;
public:
B() : A(15)     // так как a является членом класса B, то необходимо
{                    // 
проинициализировать путем вызова
b = 20;      // конструктора класса A с параметром типа int
}
B(int y) : A(15)
{
b = y;
}
B(int x, int y) : A(x), b(y)  // с помощью этого конструктора можно                                      
{                                      // проинициализировать  a и через параметры
}

void Print()

      {
A::Print();   // вызов функции Print() из класса A
std::cout << b << endl;
}
};

void main()
{
B obj(40, 50);
obj.Print();      // вызов функции Print() из класса B
obj.A::Print();  // вызов функции Print() из класса A
}


Рисование мышью в консоли

Комментариев нет:

Отправить комментарий