Структуры по сравнению с классами в C++ [дубликат]

Если вы пытаетесь переписать /list/findcontent.action?id=6 в /findcontent.action?id=6, ваше утверждение rewrite является неполным. Вам не хватает захвата.

Например:

rewrite ^/list(.*)$ $1 break;

Подробнее см. в этом документе .


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

Например:

location /list/ {
    proxy_pass   http://list.example.com:89/;
}

Обратите внимание на конечный / для значений location и proxy_pass. Подробнее см. в этом документе .

22
задан 7 revs, 3 users 50% 23 May 2017 в 12:07
поделиться

10 ответов

Технически, единственная разница между этими двумя - то, что структуры общедоступны: по умолчанию и классы являются частными:

Кроме этого, нет никакого технического различия.

структура по сравнению с классом затем становится чисто выразительным нюансом языка.

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

структура = данные общедоступна с очень простыми вспомогательными методами

класс = сильно инкапсулировавший, данные изменяются / получил доступ только через методы

17
ответ дан 29 November 2019 в 05:10
поделиться

Я использую структуры для простых контейнеров типов, которые не предоставляют никаким конструкторам или операторам.

Классы для всего остального.

6
ответ дан 29 November 2019 в 05:10
поделиться

Используйте структуру при простой необходимости в "блоке материала", который не имеет логических инвариантов, которые необходимо сохранить. Используйте класс для чего-либо еще.

Видят также, что FAQ C++ говорит относительно предмета .

4
ответ дан 29 November 2019 в 05:10
поделиться

Используйте класс, если у Вас есть методы, структура если нет.

Класс должен скрыть все свои внутренности, только выставляющие методы или свойства. Структура имеет тенденцию выставлять все свои внутренности и не имеет никаких методов доступа.

Где только один бит кода получает доступ к некоторым (связанным) данным, структура может быть совершенно разумной. Где несколько битов кода должны изменить данные или если бы это - что-либо немного сложное, класс был бы лучшей ставкой.

2
ответ дан 29 November 2019 в 05:10
поделиться

Различие между Классами и Структурами - то, что структуры являются группами переменных, и классы представляют объекты. Объекты имеют атрибуты И методы и быть частью иерархии.

, Если Вы используете C++ для использования в своих интересах возможностей OO, лучше использовать классы / объекты, которые являются более естественными.

2
ответ дан 29 November 2019 в 05:10
поделиться

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

1
ответ дан 29 November 2019 в 05:10
поделиться

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

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

1
ответ дан 29 November 2019 в 05:10
поделиться

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

единственное время я делаю исключение к тому правилу, то, если мне нужен простой функтор: например,

struct compare { bool operator() { ... } };
sort(v.begin(), v.end(), compare());

потребность в public: маркировка просто загромоздила бы код unnecessarity.

0
ответ дан 29 November 2019 в 05:10
поделиться

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

все же существуют некоторые ожидания и естественные стремления, частично потому что структуры в C++ прибывают из C.

Мой подход: Если это имеет какие-либо частные данные, конструктора/деструктор или какие-либо сложные функции членства (которые делают больше, чем просто преобразование на устанавливало/получало, и т.д.), используйте класс.

0
ответ дан 29 November 2019 в 05:10
поделиться
Другие вопросы по тегам:

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