Я беру класс по объектно-ориентированному программированию на С++. В недавнем назначении я определил функцию-член в struct
. Мой преподаватель объяснил, что, хотя он и компилируется для использования функций-членов внутри структур, он предпочел бы, чтобы мы не использовали для обратной совместимости с C и (особенно в этом классе начинающего) практиковать хорошую инкапсуляцию данных - мы должны использовать struct
для типов, которые содержат в основном данные, и class
для приложений, которые извлекают выгоду из более процедурной инкапсуляции. Он указал, что эта практика исходит из истории структур/классов в С++, о чем я хотел бы узнать больше.
Я знаю, что структуры функционально такие же, как и классы, за исключением доступа к члену/наследованию по умолчанию. Мой вопрос:
Почему структуры и классы включены в С++? Из моего фона в С#, где структуры и классы имеют важные отличия, похоже, что struct
в С++ - это просто синтаксический сахар для определения классов с общедоступностью по умолчанию. Это?
Я не ищу мнения о том, когда/почему нужно использовать вместо другого - я родился хорошо после этих конструкций, и я ищу историю из них. Были ли они задуманы вместе? Если да, то почему? Если нет, то что было первым, и почему второе добавилось? Я понимаю, что в этом сообществе есть много почтенных старейшин, которые могут иметь живую память об источниках этих признаков, а также ссылки на публикации стандартов или примеры кода, в которых как первый, так и первый появились, добавят к полезности ответов.
Обратите внимание, что этот вопрос не: