Be self controlled and alert. Your enemy the devil prowls around like a roaring lion looking for someone to devour. 1 Peter 5:8 (Bible)
Спецификатор класса изменяемого хранилища в C ++ (или использование ключевого слова mutable в C ++)
auto, register, static и extern являются спецификаторами класса хранения в C. typedef также рассматривается как спецификатор класса хранения в C. C ++ также поддерживает все эти спецификаторы класса хранения. В дополнение к этому C ++ добавляет один важный спецификатор класса хранения, имя которого является изменяемым.
Зачем нужен изменчивый?
Иногда требуется изменить один или несколько членов данных класса / структуры через функцию const, даже если вы не хотите, чтобы функция обновляла другие члены класса / структуры. Эту задачу легко выполнить, используя ключевое слово mutable. Рассмотрим этот пример, где использование mutable может быть полезным. Предположим, вы идете в отель и отдаете приказ официанту принести какое-нибудь блюдо с едой. Отдав заказ, вы вдруг решаете сменить порядок питания. Предположим, что в отеле есть возможность сменить заказанную еду и снова принять заказ новой еды в течение 10 минут после выдачи 1-го заказа. Через 10 минут заказ не может быть отменен, а старый заказ не может быть заменен новым. Смотрите следующий код для деталей.
|
Выход:
Customer name is: Pravasi Meet Food ordered by customer is: Ice Cream table no is: 3 Total payable amount: 100 Customer name is: Pravasi Meet Food ordered by customer is: GulabJammuns table no is: 3 Total payable amount: 150
Внимательно следите за выходом вышеуказанной программы. Значения элементов данных placeorder и bill отличаются от функции const, поскольку они объявлены как изменяемые.
Ключевое слово mutable в основном используется для изменения конкретного члена данных объекта const. Когда мы объявляем функцию как const, указатель this, переданный функции, становится const . Добавление изменяемой переменной позволяет указателю const изменять элементы.
mutable особенно полезен, если большинство членов должно быть постоянным, но некоторые должны быть обновляемыми. Члены данных, объявленные как изменяемые, могут быть изменены, даже если они являются частью объекта, объявленного как const. Вы не можете использовать изменяемый спецификатор с именами, объявленными как static или const, или как ссылки.
В качестве упражнения прогнозируем выход следующих двух программ.
|
|
Источник:
Спецификатор класса изменяемого хранилища (только C ++)
Эта статья предоставлена Meet Pravasi . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме
Рекомендуемые посты:
- переопределить ключевое слово в C ++
- ограничить ключевое слово в C
- _Generic ключевое слово в C
- Использование явного ключевого слова в C ++
- Статическое ключевое слово в C ++
- C ++ | ключевое слово друга | Вопрос 1
- C ++ | ключевое слово друга | вопрос 2
- C ++ | Статическое ключевое слово | Вопрос 4
- C ++ | Статическое ключевое слово | Вопрос 3
- C ++ | Статическое ключевое слово | Вопрос 1
- C ++ | Статическое ключевое слово | вопрос 2
- C ++ | ключевое слово const | Вопрос 5
- C ++ | Статическое ключевое слово | Вопрос 6
- Понимание ключевого слова extern в C
- C ++ | ключевое слово const | Вопрос 1
0.00 (0%) 0 votes