Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
#1

const_cast mutable - C++

17.07.2013, 18:40. Просмотров 800. Ответов 15
Метки нет (Все метки)

в чем разница?
спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2013, 18:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос const_cast mutable (C++):

Const_cast и mutable - C++
В чем их отличие и когда их необходимо использовать (если не нарушена архитектура программы)?

Поле mutable в структуре - C++
Добрый день. Есть структура struct NameStructure { protected: mutable TDateTime Time; ....... } Эту структуру я...

Внутренняя работа mutable - C++
Привет. Хочу спросить у особо продвинутых, как работает ключевое слово mutable. Вот тут, например: #include <iostream> #include...

Смысл спецификатора mutable - C++
В этом тема и заключается %-)

Назначение mutable в лямбда-функции - C++
Прокомментируйте, чтоб не выдумывать. Спецификатор mutable определяет по списку захвата локальные статические переменные? int main() {...

Несколько mutable bool в классе - C++
Приветствую. Столкнулся с необъяснимой для меня проблемой. Суть: Есть класс, пусть будет: class test { mutable bool flag1,...

15
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
17.07.2013, 18:47 #2
slipp1, В том, что mutable это mutable, а const_cast это const_cast.
mutable применяется только к полям класса и этот спецификатор обозначает, что данное поле класса может изменяться в константных функциях класса.
0
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
17.07.2013, 20:11  [ТС] #3
const_cast применяется вне классов?
metable к данным класса?

но суть то одна и та же. обойти const.
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 866
Регистрация: 27.09.2012
Сообщений: 18,891
Записей в блоге: 3
Завершенные тесты: 1
17.07.2013, 20:20 #4
Цитата Сообщение от slipp1 Посмотреть сообщение
но суть то одна и та же. обойти const.
Суть разная! К тому же "обход" константности кастом может фигово закончиться
0
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
17.07.2013, 20:24  [ТС] #5
mutable - разрешает изменение
const_cast - снимает const

разве не так!!
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 866
Регистрация: 27.09.2012
Сообщений: 18,891
Записей в блоге: 3
Завершенные тесты: 1
17.07.2013, 20:27 #6
Цитата Сообщение от slipp1 Посмотреть сообщение
разве не так!!
Ну и где сходство?
Цитата Сообщение от slipp1 Посмотреть сообщение
mutable - разрешает изменение
mutable разрешает менять данные класса в КОНСТАНТНОЙ ФУНКЦИИ, а не снимает модификатор const!
Цитата Сообщение от slipp1 Посмотреть сообщение
const_cast - снимает const
снимает только сам модификатор const, но не делает сами данные не константными!
0
Jupiter
17.07.2013, 20:51
  #7

Не по теме:

Цитата Сообщение от slipp1 Посмотреть сообщение
mutable - разрешает изменение
const_cast - снимает const
разве не так!!
толсто

0
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
17.07.2013, 22:21  [ТС] #8
Цитата Сообщение от Jupiter Посмотреть сообщение
толсто
непотеменепонял...
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.07.2013, 23:08 #9
Цитата Сообщение от slipp1 Посмотреть сообщение
непотеменепонял...
чё ты не понял?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
void foo(const int& value)
{
    const_cast<int&>(value) = 10;
}
 
int main()
{
    int i = 5;
    std::cout << i << std::endl;
    foo(i);
    std::cout << i << std::endl;
}
перепиши этот код с помощью mutable
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 866
Регистрация: 27.09.2012
Сообщений: 18,891
Записей в блоге: 3
Завершенные тесты: 1
17.07.2013, 23:12 #10
Цитата Сообщение от Jupiter Посмотреть сообщение
перепиши этот код с помощью mutable
и еще так:
C++
1
const int i = 5;
0
Tulosba
17.07.2013, 23:29
  #11

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
перепиши этот код с помощью mutable
C++
1
#define mutable const_cast

0
Croessmah
17.07.2013, 23:31
  #12

Не по теме:

Tulosba, тогда получится mutableint i -> const_cast int i - ошибка же
а так:
mutable<int&>(value) - не верный синтаксис mutable

0
Tulosba
17.07.2013, 23:39
  #13

Не по теме:

Croessmah, я предлагаю взять исходник Jupiter'а изменить const_cast на mutable, и перед всем этим чудом добавить ранее указанный дефайн.

0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 866
Регистрация: 27.09.2012
Сообщений: 18,891
Записей в блоге: 3
Завершенные тесты: 1
17.07.2013, 23:46 #14

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
я предлагаю взять исходник Jupiter'а изменить const_cast на mutable, и перед всем этим чудом добавить ранее указанный дефайн.
И компилятор получит код с const_cast, а не с mutable и везде будет const_cast, развели детский сад, ей Богу
define - это не решение, а лишь создание видимости
Тогда уж
C++
1
#define int "jhsdljkgsdgfdhgjkdfghjkdfkjgldfs"
Вам же ведь когда говорят "Нужен паспорт" Вы же не несете кусок туалетной бумаги с надписью "Это паспорт"



Добавлено через 4 минуты

Не по теме:

Да, грубо, но уже достало в каждой теме, где есть
"А сделайте с помощью этого", первый же ответ

C++
1
#define ля-ля тополя

1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
17.07.2013, 23:59 #15
Ежу понятно, что если нет класса, то и mutable быть не может. А когда предлагаются решения вида #define ля-ля, то рассматривать их надо исключительно как
0
17.07.2013, 23:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2013, 23:59
Привет! Вот еще темы с ответами:

Изменить const с помощью mutable - C++
Привет всем, у меня 1 вот такой вопрос, почему в етом коде &quot;а&quot; - не изменяется? у меня же &quot;b&quot; -mutable? помогите пожалуйста... ...

const_cast - C++
День добрый. Пытаюсь вот разобраться как работает данный оператор. Имеется пример: #include &lt;iostream&gt; int main() { const...

Const_cast ub - C++
в каком-то видео для новичков увидел классный код такого плана const int x = 42; const_cast&lt;int&amp;&gt;(x) = 666; ведет ли такой...

const_cast(*this) - C++
Пусть есть некий class Foo { ... }; std::wostream&amp; operator&lt;&lt; (std::wostream &amp;out, Foo &amp;obj) { // ... very-very many...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru