34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,564
|
||||||
1 | ||||||
Когда в классе функция должна прописываться как static?04.01.2020, 20:28. Показов 420. Ответов 2
Метки нет (Все метки)
Добрых суток!
Ниже класс со статическим свойством. В каких случаях нужно прописывать функции в таких классах как статик? Есть какие-то правила на этот счёт?
0
|
04.01.2020, 20:28 | |
Ответы с готовыми решениями:
2
Как работают static-переменные объявленные в в базовом классе? Как объявить в классе static-массив, не используя cpp файлы Вывод static текста, когда курсор находится НАД контролом. как? Когда запускаю и ввожу параметры, то, в момент когда программа должна выполнять действие, пишет ошибку |
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
04.01.2020, 21:12 | 2 |
Все просто: объект - много состояний, статика - одно состояние.
Например в вашем случае только один счетчик, а если понадобится несколько независимых?
0
|
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
|
||||||||||||||||||||||||||
05.01.2020, 00:10 | 3 | |||||||||||||||||||||||||
Fatmarmelad, Сейчас попытаюсь вас запутать) Как правило если метод не использует создаваемый объект, т.е. $this, то это кандидат на static. Правда нужно учитывать, что $this в какой-то момент времени может появиться, если мы захотим как-то конфигурировать наш объект.
Вообще каких-либо правил нет. Главное понимать как это работает, а как вы уже будете это использовать - ваше дело. Конечно это слабо относится к вашему примеру, но раз уж мы заговорили о статике, то мне показалось необходимым разъяснить некоторый важный аспект, чтоб вы понимали) Давайте рассмотрим на примере. Допустим у нас есть некий калькулятор.
Теперь мы бы хотели протестировать данный объект и понимаем, что значение скидки и порог может часто меняться. Сегодня 5 процентов, а завтра 3. Тогда нам нужно будет менять не только сам объект, но и его тесты. Чтоб этого избежать, допустим мы можем их вынести как параметры метода.
Более того, если абстрагироваться от конкретной реализации Калькулятора, и перейти на интерфейс, то тогда в класс Cart мы сможем подставлять любые калькуляторы, даже вложенные, так как мы захотим.
0
|
05.01.2020, 00:10 | |
05.01.2020, 00:10 | |
Помогаю со студенческими работами здесь
3
У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? Как прописываться в RUN реестра при запуске? Static переменная в классе MFC и static указатель в классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |