Что лучше всего наследовать или использовать публичный объект? - PullRequest
0 голосов
/ 07 марта 2012

Это мое сомнение: у меня есть два класса A и B. Я могу написать:

class A: public B  {....}

Так что an_instance_of_A может использовать методы B.

Но я мог бы также написать:

class A {
public:
B instance_B;
}

Таким образом, an_instance_of_A может использовать методы instance_B.(то есть методы B).

Я могу сделать то же самое.Что лучше?Что быстро компилируется?Это то же самое?Спасибо.

Ответы [ 3 ]

2 голосов
/ 07 марта 2012

вы наследуете , когда есть отношения "есть". как между vehicle и car.

Элемент данных используется, когда существует тип объекта «содержит» или «состоит из». как class school состоит из class teacher, class student и т. д.

0 голосов
/ 07 марта 2012

Как уже говорилось ранее, публичное наследование следует использовать только в том случае, если A также является B (например, Worker также является Person).

Наличие экземпляра объекта внутри класса лучше для тестирования и инкапсуляции, есликак это не публично.Пожалуйста, не выставляйте участников как общедоступных, за исключением POD.Это создает несколько проблем (например, кто-то может легко нарушить целостность вашего класса)

0 голосов
/ 07 марта 2012

публичное наследование описывает отношение is-a . То есть все, что вы можете сделать с B, вы можете сделать с A.

Публичные объекты - это что-то совершенно другое и не очень распространенное. Если A может иметь более одного B, то вы не можете использовать наследование, поэтому используйте состав (объекты-члены). Должны ли они быть публичными или нет, зависит от A и B и от того, как вы хотите их использовать.

РЕДАКТИРОВАТЬ, кажется, этот вопрос является дубликатом близкого соответствия:

Предпочитаете композицию наследованию?

Как сказал Джеймс, время компиляции не должно быть высоким приоритетом при выборе между наследованием или композицией, кроме как в особом случае.

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