В C ++, в чем разница между сеттерами и геттерами и конструкторами? - PullRequest
0 голосов
/ 04 декабря 2018

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

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Если мы используем конструкторы, нужно ли нам использовать сеттеры и геттеры

Прежде всего, вы не можете иметь класс без конструктора, если вы не предоставите никакой компилятор, который сгенерирует их длявы.Вы не должны использовать сеттеры и геттеры независимо от того, определяете ли вы свой собственный конструктор или нет.Когда вы разрабатываете класс, вы проектируете его интерфейс, а затем добавляете переменные-члены для реализации этого поведения, и эти члены являются внутренним представлением класса, и внешний мир не должен знать о них - для этого и нужна инкапсуляция данных, и поэтому мы делаем ихчастный или охраняемый.Когда вы сначала добавляете участников, а затем вслепую предоставляете геттеры и / или сеттеры - это неправильный подход к OOD.

0 голосов
/ 04 декабря 2018

Две вещи очень разные.

A constructor - это функция, которая вызывается системой каждый раз, когда создается объект.Если вы не определите его самостоятельно, компилятор предоставит файл по умолчанию.Что бы ни случилось, конструктор будет вызываться ровно один раз для каждого создаваемого вами объекта.Его цель обычно состоит в том, чтобы установить допустимые значения для всех членов класса.

В отличие от этого получатели и сеттеры являются просто обычными функциями - методами, целью которых являетсяобеспечить доступ к отдельным членам класса (доступ для чтения и записи соответственно).Не требуется предоставлять его, и они не генерируются автоматически;и наоборот, если он указан, его можно вызывать так часто, как вам хочется.

Надеюсь, понятно, чем конструктор отличается от set / getters.

0 голосов
/ 04 декабря 2018

Использование конструкторов для создания объектов.Используйте геттеры для получения информации от уже существующего объекта.Используйте сеттеры для изменения уже существующего объекта.

Любому конкретному классу может понадобиться одна или несколько из этих вещей, но не всем классам понадобятся все они.В частности, неизменяемые классы не могут быть изменены после того, как они были созданы, поэтому не нуждаются в установщиках.

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