Прежде всего, вы должны взять хорошую книгу по C ++ и прочитать концепции:
Полный список книг и руководств по C ++
Для начала немного кратко о ваших Вопросах:
Ваш первый пример - пример Композиция , а не Наследование .
Наследование является IS отношением.
Композиция имеет отношения .
В этом примере Circle
IS тип Shape
.
class circle: shape
совпадает с:
class circle: private shape
Для класса по умолчанию указан спецификатор доступа Private
. Это частное наследование . Класс circle
в частном порядке происходит от класса shape
.
При частном наследовании все публичные и защищенные члены Базового класса становятся частными членами производного класса.
class circle: public shape
Is Public Inheritance , класс circle
публично происходит от класса shape
.
В Public Inheritance открытые члены базового класса становятся открытыми членами класса Derived, а защищенные члены базового класса становятся защищенными членами класса Derived.
Этот C ++ - Faq должен быть хорошим чтением для понимания основ:
Что такое спецификаторы доступа? Должен ли я наследовать с частным, защищенным или публичным?
Но когда вы делаете функцию друга, разве это не то же самое, что обнародовать ее?
Когда вы делаете функцию как friend
класса, спецификаторы доступа больше не применяются к этой функции. Эта функция может обращаться к protected
, а также private
членам этого класса. Но это ограничено только этой функцией.
что означает ключевое слово virtual
/ do / используется?
Ключевое слово virtual
используется для реализации динамического / динамического полиморфизма .
Это широкий термин, который нужно объяснить как таковой, поэтому очень важно, чтобы вы прочитали и поняли концепцию из книги. Если вы все еще сталкиваетесь с проблемами в понимании чего-либо конкретного, зайдите сюда и не стесняйтесь задать Специальный вопрос здесь.