Наследование и полиморфизм - PullRequest
1 голос
/ 01 ноября 2011

Итак, я сейчас изучаю наследование в своем классе c ++ и пытаюсь раскрыть всю терминологию. Я понимаю разницу между защищенным и частным. Но когда вы делаете функцию друга, разве это не то же самое, что делать его публичным?

Примеры, которые они используют для обучения наследованию, - это формы, поэтому:

class shape{
   struct circle
   struct rectangle
   struct line
}

Что-то в этом роде, в чем разница между словами

class circle: shape
class circle: public shape
class circle: private shape (don't actually know if this one is possible)

И, наконец, что означает ключевое слово virtual / do / используется? Спасибо

Ответы [ 3 ]

7 голосов
/ 01 ноября 2011

Прежде всего, вы должны взять хорошую книгу по 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 используется для реализации динамического / динамического полиморфизма .
Это широкий термин, который нужно объяснить как таковой, поэтому очень важно, чтобы вы прочитали и поняли концепцию из книги. Если вы все еще сталкиваетесь с проблемами в понимании чего-либо конкретного, зайдите сюда и не стесняйтесь задать Специальный вопрос здесь.

0 голосов
/ 15 апреля 2013

Наследование - это когда новый класс берет на себя старый существующий класс, а полиморфизм - когда вы ссылаетесь на определенный класс в программе в качестве основы нового введенного класса.

0 голосов
/ 15 апреля 2013

Это процесс, который позволяет программистам создавать новый класс, который является специализацией существующего класса, а затем новый класс называется производным классом существующего класса, а существующий класс называется базой нового созданного.учебный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...