Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
1

const_cast mutable

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

в чем разница?
спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2013, 18:40
Ответы с готовыми решениями:

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

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

Внутренняя работа mutable
Привет. Хочу спросить у особо продвинутых, как работает ключевое слово mutable. Вот тут, например:...

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

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

но суть то одна и та же. обойти const.
0
Don't worry, be happy
16921 / 9797 / 1887
Регистрация: 27.09.2012
Сообщений: 24,296
Записей в блоге: 2
17.07.2013, 20:20 4
Цитата Сообщение от slipp1 Посмотреть сообщение
но суть то одна и та же. обойти const.
Суть разная! К тому же "обход" константности кастом может фигово закончиться
0
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
17.07.2013, 20:24  [ТС] 5
mutable - разрешает изменение
const_cast - снимает const

разве не так!!
0
Don't worry, be happy
16921 / 9797 / 1887
Регистрация: 27.09.2012
Сообщений: 24,296
Записей в блоге: 2
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
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
17.07.2013, 22:21  [ТС] 8
Цитата Сообщение от Jupiter Посмотреть сообщение
толсто
непотеменепонял...
0
Каратель
Эксперт С++
6598 / 4019 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
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
Don't worry, be happy
16921 / 9797 / 1887
Регистрация: 27.09.2012
Сообщений: 24,296
Записей в блоге: 2
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
Don't worry, be happy
16921 / 9797 / 1887
Регистрация: 27.09.2012
Сообщений: 24,296
Записей в блоге: 2
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
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.07.2013, 23:59 15
Ежу понятно, что если нет класса, то и mutable быть не может. А когда предлагаются решения вида #define ля-ля, то рассматривать их надо исключительно как
0
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
22.07.2013, 00:12  [ТС] 16
Цитата Сообщение от Jupiter Посмотреть сообщение
чё ты не понял?
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
mutable только в классах.

Добавлено через 47 секунд
разобралсо?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2013, 00:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Лямбда-функция и mutable переменная
Добрый день! Есть такой код: void foo() { int id = 0; auto l = () mutable { ...

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

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

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


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

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

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