2012-06-08 3 views
4

Мне было предложено назвать три вещи, которые нельзя унаследовать от базового класса.Вещи, которые не могут быть унаследованы

Помимо частных функций-членов, что еще я могу добавить?

Я думал о функциях друзей, но поскольку они фактически не принадлежат классу, они не имеют никакого отношения к наследованию.

+5

«частные функции с именами, начинающимися с« n »,« частные функции с именами, начинающимися с «o», и «частные функции с именами, не начинающимися с« n »или« o »: P –

+0

Это смешно. .. –

+0

@ R.MartinhoFernandes, можете ли вы подробнее рассказать? lolz – aProgrammer

ответ

7

Несколько очевидных, о которых вы обычно заботитесь, это конструкторы, операторы присваивания и деструкторы.

Во всех этих случаях новая версия, относящаяся к производному классу, предоставляется либо пользователем, либо синтезируется компилятором (хотя C++ 11 также добавляет некоторые возможности для таких вещей, как просто удаление того, t хотите наличие).

Возможно, я должен добавить, что «нельзя наследовать» не обязательно точно. Например, в C++ 11 добавляются наследующие конструкторы (но они не были в C++ 98/03, что большинство курсов по-прежнему имеют дело). Даже в C++ 11 вы не наследуете их по умолчанию.

0

Частные переменные-члены и частные базы. Вы также не можете наследовать аргументы шаблона, COM __uuids и экспортируете ли класс из DLL.

Операторы присваивания не могут быть унаследованы.

+3

Я думаю, что вы ошибаетесь, частные переменные-члены наследуются, но производные классы не могут получить к ним доступ напрямую. –

+0

@crazyffan: Просто добавьте «Возможность доступа» спереди. Кроме того, я предоставил более того. # – Puppy

+0

Спасибо за аргументы «больше, чем это», но «шаблоны», COM __uuids' выходят за рамки, так как этот вопрос для студентов первого курса, я считаю, что ответ должен быть намного проще. –

Смежные вопросы