Составители:
Рубрика:
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 то-
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »