Я до сих пор оглядывался на свой код и обнаружил, что я редко писал class
. Или, другими словами, я не вижу смысла использовать их. Я имею в виду, почти все в кодировании, я могу работать с ними без использования классов, просто записывая функции и группируя их в разные файлы .h/.cpp
на основе их функциональности.
Даже после того, как я участвовал в нескольких проектах, я все еще не чувствую настоятельной необходимости делать это, поскольку прогресс идет хорошо без больших проблем. Я работаю в основном с C++ (иногда MATLAB).
Обратите внимание, что я использовал struct
много, и я знаю, что структура и класс не имеют большой разницы для C++. Но я использую только структуру для хранения данных (вместе взятые данные группы). Данные не требуют управления потоком (т.е. Геттеры/сеттеры, которые поддерживают или защищают внутреннее состояние) и не начинают приобретать какие-либо основные функции.
Может быть, мне не хватает кое-чего об основных вещах в ООП. Итак, когда мы должны инкапсулировать наши коды с помощью классов? Может ли кто-нибудь поделиться своим мнением?
В C++ struct
и class
являются одинаковыми, за исключением другого модификатора доступа по умолчанию. члены struct
по умолчанию являются public
, а члены class
по умолчанию являются private
. Если мы рассматриваем классы в C++ как class
с инкапсулированными членами данных и функциями публичного члена, которые раскрывают функциональность, связанную с этими данными, следующие несколько хороших предложений, которые вы хотите использовать для класса:
Если у вас есть только предложение 1, вам, вероятно, просто нужна структура. См. " Классы должны использовать инварианты".
struct-key
и class-key
разному, хотя бы только для эстетики.
Вы можете писать бесклассовый код на большинстве языков. В Java вы просто используете static
методы и ничего больше.
С помощью C/C++ - struct
связывает группу значений вместе в единое целое, чтобы сформировать единый компонент, который может быть создан и манипулировать ими по отдельности.
В тот момент, когда вы обнаружите, что вам нужны class
es и экземпляры классов (как правило, объекты), это момент, когда вы растете в своей кодировке. С class
вы связываете несколько полей вместе (как и с struct
s), но здесь вы также присоединяете к ним method
. Теперь вы работаете с объектами, которые имеют структуру и функцию.
Как только этот шаг будет завершен, вы обнаружите совершенно новый мир программирования, в который вы помещаете эти объекты в другие объекты или в queue
для транспортировки или на map
и set
для хранения, а затем обнаруживаете, что map
и set
и queue
сами по себе являются объект со своим class
.
В итоге - работа с простым process
- это как построить свой дом с песком. Работа со struct
строит ваш дом с помощью палочек. Работа с class
es позволяет вам создавать object
и манипулировать ими как сущностями - построить свой дом с камнем - вы можете отступить от процесса, с которым вы так долго трудились, и начать рассматривать архитектуру вашей системы.
struct
s может иметь функции-члены. Нет никакой разницы. Вы получаете класс независимо от того, какое ключевое слово вы используете.