ВУЗ:
Составители:
Рубрика:
96
на базовый класс, адреса объекта производного класса. По умолчанию выбор
вызываемой функции осуществляется в соответствии с типом ссылки. В
случае вызова виртуальной функции через ссылку на базовый класс
программа будет использовать метод, определенный для типа объекта, а не
метод, определенный для типа ссылки (реализация принципа позднего
связывания).
Объявление виртуального метода в базовом классе BaseClass
осуществляется добавлением в начало объявления метода ключевого слова
virtual, например:
virtual void Method()
{
. . .
}
В производном классе DerivedClass этот метод может
переопределяться. Для этого в определении метода указывается ключевое
слово override:
override void Method()
{
. . .
}
Продемонстрируем работу виртуального метода на примере:
BaseClass bc = new BaseClass();
DerivedClass dc= new DerivedClass();
BaseClass bcRef; // ссылка на базовый класс
bcRef = bc; // ссылке на базовый класс присваивается
// адрес объекта класса BaseClass
bcRef.Method(); // вызов метода Method() класса BaseClass
bcRef = dc; // ссылке на базовый класс
// присваивается адрес объекта
// класса DerivedClass
bcRef.Method(); // вызов метода Method()
// класса DerivedClass
на базовый класс, адреса объекта производного класса. По умолчанию выбор
вызываемой функции осуществляется в соответствии с типом ссылки. В
случае вызова виртуальной функции через ссылку на базовый класс
программа будет использовать метод, определенный для типа объекта, а не
метод, определенный для типа ссылки (реализация принципа позднего
связывания).
Объявление виртуального метода в базовом классе BaseClass
осуществляется добавлением в начало объявления метода ключевого слова
virtual, например:
virtual void Method()
{
. . .
}
В производном классе DerivedClass этот метод может
переопределяться. Для этого в определении метода указывается ключевое
слово override:
override void Method()
{
. . .
}
Продемонстрируем работу виртуального метода на примере:
BaseClass bc = new BaseClass();
DerivedClass dc= new DerivedClass();
BaseClass bcRef; // ссылка на базовый класс
bcRef = bc; // ссылке на базовый класс присваивается
// адрес объекта класса BaseClass
bcRef.Method(); // вызов метода Method() класса BaseClass
bcRef = dc; // ссылке на базовый класс
// присваивается адрес объекта
// класса DerivedClass
bcRef.Method(); // вызов метода Method()
// класса DerivedClass
96
Страницы
- « первая
- ‹ предыдущая
- …
- 94
- 95
- 96
- 97
- 98
- …
- следующая ›
- последняя »
