Что лучше всего наследовать или использовать публичный объект?

Это мое сомнение: у меня есть два класса 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 ответа

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам