ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
Для извлечения элемента из очереди и стека вызывается метод
базового класса DeleteByPosition. Извлечение происходит из
начала списка.
// метод извлечения элемента из стека
int Stack::PopElement()
{
// удаление элемента, стоящего в начале списке
return DeleteByPosition(1);
}
// метод извлечения элемента из очереди
int Queue::PopElement()
{
// уменьшаем количество элементов в очереди
if(count != 0)
count--;
// извлекаем из списка первый элемент
return DeleteByPosition(1);
}
При public-наследовании функцию печати стека и очереди
переопределять не требуется, поскольку вступает в силу принцип
подстановки – ссылка на базовый класс может указывать на объект
производного класса (будет вызвана дружественная функция базового
класса). Наследование private-способом данный принцип игнорирует
– преобразование из производного класса в базовый возможно только в
методах производного класса или в дружественных ему функциях.
Поэтому требуется написать свои функции для печати стека и очереди,
которые будут осуществлять преобразование объекта к типу базового
класса и, таким образом, вызывать функцию печати списка.
// дружественная функция печати стека
ostream& operator << (ostream& out, Stack& ob)
{
// преобразование к базовому классу и вызов
// операции вывода для базового класса
out << (List)ob;
return out;
}
// дружественная функция печати очереди
ostream& operator << (ostream& out, Queue& ob)
{
161
Объектно-ориентированное программирование на С++ Для извлечения элемента из очереди и стека вызывается метод базового класса DeleteByPosition. Извлечение происходит из начала списка. // метод извлечения элемента из стека int Stack::PopElement() { // удаление элемента, стоящего в начале списке return DeleteByPosition(1); } // метод извлечения элемента из очереди int Queue::PopElement() { // уменьшаем количество элементов в очереди if(count != 0) count--; // извлекаем из списка первый элемент return DeleteByPosition(1); } При public-наследовании функцию печати стека и очереди переопределять не требуется, поскольку вступает в силу принцип подстановки – ссылка на базовый класс может указывать на объект производного класса (будет вызвана дружественная функция базового класса). Наследование private-способом данный принцип игнорирует – преобразование из производного класса в базовый возможно только в методах производного класса или в дружественных ему функциях. Поэтому требуется написать свои функции для печати стека и очереди, которые будут осуществлять преобразование объекта к типу базового класса и, таким образом, вызывать функцию печати списка. // дружественная функция печати стека ostream& operator << (ostream& out, Stack& ob) { // преобразование к базовому классу и вызов // операции вывода для базового класса out << (List)ob; return out; } // дружественная функция печати очереди ostream& operator << (ostream& out, Queue& ob) { 161
Страницы
- « первая
- ‹ предыдущая
- …
- 159
- 160
- 161
- 162
- 163
- …
- следующая ›
- последняя »