Кнопка Spin, начинающаяся с 2 вместо 1

{Представьте себе два объекта: A и B того же типа _t (относительно C ++), и вы думаете о неглубоко / глубоком копировании A-B}

Неверное копирование: просто делает копию ссылку на A в B. Подумайте об этом как копию адреса A. Таким образом, адреса A и B будут одинаковыми, то есть они будут указывать на то же место памяти, то есть на содержимое.

Глубокая копия: просто делает копию всех членов A, выделяет память в другое место для B, а затем назначает скопированные элементы B для достижения глубокой копии. Таким образом, если A становится несуществующим, B все еще действует в памяти. Правильный термин для использования будет клонированием, где вы знаете, что оба они абсолютно одинаковы, но все же разные (т. Е. Хранятся как два разных объекта в пространстве памяти). Вы также можете предоставить свою клон-обертку, где вы можете выбрать через список включения / исключения, какие свойства выбрать во время глубокой копии. Это довольно распространенная практика при создании API-интерфейсов.

Вы можете выбрать «Мелкая копия ONLY_IF», в которой вы понимаете вовлеченные ставки. Когда у вас есть огромное количество указателей для работы на C ++ или C, выполнение мелкой копии объекта ДЕЙСТВИТЕЛЬНО - плохая идея.

EXAMPLE_OF_DEEP COPY_ Примером является то, что когда вы пытаетесь выполнить обработку изображений и распознавание объектов, вам нужно замаскировать «Irrelevant and Repeating Motion» из ваших областей обработки. Если вы используете указатели изображений, у вас может быть спецификация для сохранения этих изображений масок. СЕЙЧАС ... если вы сделаете мелкую копию изображения, когда ссылки указателя будут убиты из стека, вы потеряли ссылку и ее копию, то есть в какой-то момент будет ошибка времени выполнения. В этом случае вам нужна глубокая копия вашего изображения с помощью CLONING. Таким образом, вы можете получить маски в случае, если они вам понадобятся в будущем.

EXAMPLE_OF_SHALLOW_COPY Я не очень осведомлен по сравнению с пользователями в StackOverflow, поэтому не стесняйтесь удалять эту часть и ставить хороший пример, если вы может уточнить. Но я действительно думаю, что неплохо делать мелкую копию, если вы знаете, что ваша программа будет работать в течение бесконечного периода времени, т. Е. Непрерывная операция push-pop поверх стека с вызовами функций. Если вы демонстрируете что-то любителю или новичку (например, учебное пособие C / C ++), то, вероятно, все в порядке. Но если вы используете приложение, такое как система наблюдения и обнаружения, или система отслеживания сонара, вы не должны хранить мелкие копии своих объектов, потому что это рано или поздно убьет вашу программу.

0
задан Patrick Trentin 5 March 2019 в 17:24
поделиться

1 ответ

Что SpinButton1.Value из-за отсутствия лучшего слова, «скрытого» в другом месте. Он не знает, чтобы сбросить до 1, когда D12 пусто - вы должны дать ему знать, чтобы сбросить:

Private Sub SpinButton1_Change()
    If Range("D12").Value = "" Then SpinButton1.Value = 1
    Range("D12").Value = SpinButton1.Value
    SpinButton1.Max = 100
    SpinButton1.Min = 1
    SpinButton1.SmallChange = 1
End Sub
0
ответ дан dwirony 5 March 2019 в 17:24
поделиться
Другие вопросы по тегам:

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