Функции членства C++ по сравнению с бесплатными функциями

foo - это глобальная переменная модуля (ее нет ни в одной функции). Все области в модуле могут получить к нему доступ.

29
задан Praetorian 11 February 2018 в 06:03
поделиться

3 ответа

Принцип интерфейса Херб Саттер

Для класса X все функции, включая свободные функции, которые оба
(а) "упомянуть" X, и
(b) "поставляются с" X
логически являются частью X, потому что они составляют часть интерфейса X.

Для более глубокого обсуждения прочтите Пространства имен и принцип интерфейса Херба Саттера.

EDIT
На самом деле, если вы хотите понять C ++, прочтите все , что написал Херб Саттер :)

29
ответ дан 28 November 2019 в 02:00
поделиться

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

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

2
ответ дан 28 November 2019 в 02:00
поделиться

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

Если он тесно связан с классом, но не имеет ' Если нет необходимости в доступе к какой-либо информации, относящейся к конкретному экземпляру, то ее следует сделать общей функцией (или функцией класса, или статической функцией, в зависимости от того, с каким языком программирования вы имеете дело).

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

Учитывая вышесказанное, я больше не вижу смысла создавать автономные функции.

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

Учитывая вышесказанное, я больше не вижу смысла создавать автономные функции.

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

Учитывая вышесказанное, я больше не вижу смысла создавать автономные функции.

0
ответ дан 28 November 2019 в 02:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: