Алгоритмы и структуры данных на С++. Аксёнова Е.А - 37 стр.

UptoLike

3.4. Виртуальные функции 37
public:
int a, b;
}
class derived: public base
{
public:
int b, c;
}
void f()
{
derived d;
d.a=1; // присваивание переменной, которая объявлена в
// классе base и унаследована в классе derived
d.b=2; // присваивание переменной, которая объявлена в
// классе derived
d.base::b=3; //присваивание переменной, которая объявлена
//в классе base и унаследована в классе derived
d.c=4; // присваивание переменной, которая объявлена в
// классе derived
base *bp=&d;
}
Неявное преобразование от derived* к base* разрешено, если при
описании наследования использовано ключевое слово public (class
derived: public base). Если бы использовалось private, то функ-
ция f должна была быть другом (функцией, которая не является чле-
ном этого класса, но которой разрешается использовать его приватные
и защищенные члены) или членом базового класса. Из приведенного
примера видно, что если члены базового класса не переопределены в
производном классе, то они обозначаются и трактуются так же, как
и члены производного класса.
3.4. Виртуальные функции
Если класс base содержит виртуальную virtual функцию vf, а
производный от него класс derived также содержит функцию vf то-
3.4.   Виртуальные функции                                      37


  public:
            int a, b;
 }

class derived: public base
 {
  public:
          int b, c;
 }

void f()
 {
  derived d;
  d.a=1;    // присваивание переменной, которая объявлена в
            // классе base и унаследована в классе derived
  d.b=2;    // присваивание переменной, которая объявлена в
            // классе derived
  d.base::b=3; //присваивание переменной, которая объявлена
            //в классе base и унаследована в классе derived
  d.c=4;    // присваивание переменной, которая объявлена в
            // классе derived
  base *bp=&d;
 }

   Неявное преобразование от derived* к base* разрешено, если при
описании наследования использовано ключевое слово public (class
derived: public base). Если бы использовалось private, то функ-
ция f должна была быть другом (функцией, которая не является чле-
ном этого класса, но которой разрешается использовать его приватные
и защищенные члены) или членом базового класса. Из приведенного
примера видно, что если члены базового класса не переопределены в
производном классе, то они обозначаются и трактуются так же, как
и члены производного класса.


                 3.4. Виртуальные функции

   Если класс base содержит виртуальную virtual функцию vf, а
производный от него класс derived также содержит функцию vf то-