Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Константная переменная 
:(
    Опции темы
HappyLife
Дата 25.8.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Здраствуйте. Скажите пожалуйста, возможноли каким-нибудь Кастом, переменную преобразовать в константную?
PM MAIL   Вверх
albertn
Дата 25.8.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: нет
Всего: 34



Код

int s=5;
f((const int) s);

Правильно ли я понял?
PM WWW ICQ   Вверх
0x07L
Дата 25.8.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 10.6.2006
Где: Москва

Репутация: нет
Всего: 5



const_cast
PM MAIL   Вверх
HappyLife
Дата 25.8.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Я уж понял что это он...
Только не разобрался как им пользоваться...
Код

int i = 10;
i = const_cast<const int>(i);
i = 100; // все равно присваивает.


P.S мне нужно переменную класса сделать константной уже после определенных дейсвий.
PM MAIL   Вверх
HappyLife
Дата 25.8.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Походу дела надо использовать геттеры...

PM MAIL   Вверх
vinter
Дата 25.8.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата

const_cast

он лишает атрибута const
Цитата

P.S мне нужно переменную класса сделать константной уже после определенных дейсвий.

так введи в определенном месте const переменную со значением которое будет у переменной...


--------------------
Мой блог
PM MAIL WWW   Вверх
HappyLife
Дата 25.8.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Конст нужно указывать при создании класса... Это не удобно.
PM MAIL   Вверх
MAKCim
Дата 25.8.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Здраствуйте. Скажите пожалуйста, возможноли каким-нибудь Кастом, переменную преобразовать в константную? 

саму переменную нет (С++ строго типизирован), если она изначально не константная
в любом другом случае преобразование не const -> const выполняется автоматически
если необходимо const, а передается не const



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Earnest
Дата 25.8.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Константные нестатические члены класса не имеют особого смысла: будучи элементом класса, в константной памяти такая переменная никогда не окажется, а логическую константность может обеспечить сам класс, объявив переменную закрытой и дав доступ только на чтение. Ну а уж методы одного класса проконтролировать несложно.


--------------------
...
PM   Вверх
Rickert
Дата 26.8.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Кто может показать практической применение, с необходимостью в const'антах? 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
MAKCim
Дата 26.8.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Кто может показать практической применение, с необходимостью в const'антах?  

всегда можно без них обойтись, программу то сам пишешь
другое дело, что это правило хорошего тона - если переменная не должна менять свое первоначальное значение, то ее следует сделать константой
в качестве примера можно взять класс, содержащий набор константных флагов
Код

class A
{
...
public:
    static const int a=1,
                    b=a<<1,
                    c=b<<1,
                        ...
...
};


Это сообщение отредактировал(а) MAKCim - 26.8.2006, 15:49


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Rickert
Дата 26.8.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Цитата

всегда можно без них обойтись, программу то сам пишешь
другое дело, что это правило хорошего тона - если переменная не должна менять свое первоначальное значение, то ее следует сделать константой

Глупо следовать правилам, которые вредят скорости работы и увеличивают зря объём памяти. Если уж хочешь фиксировать значение, то юзай #define.
ИМХО


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
MAKCim
Дата 26.8.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Глупо следовать правилам, которые вредят скорости работы и увеличивают зря объём памяти.

c чего ты взял, что константность вредит скорости и увеличивает объем?
Цитата

Если уж хочешь фиксировать значение, то юзай #define.

в С++ не рекомендуется (читай Страуструпа)
Цитата

Глупо следовать правилам

 smile 



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Rickert
Дата 26.8.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Цитата(MAKCim @  26.8.2006,  16:26 Найти цитируемый пост)
в С++ не рекомендуется (читай Страуструпа)

А если тебе в вечерней газете напишут, что программировать опасно для жизни - ты бросишь? Своим умом жить надо. #define как неотъемлемая часть C++. Или приводи полноценный аргумент, а не на дохлого страуса ссылку давай.
Цитата

c чего ты взял, что константность вредит скорости и увеличивает объем?

А время на обращение по адресу? Наносекунды, но это вредит. Когда пишешь, например, просчёт физики жидкостей - за каждый такт процессора борешься, как за последнюю надежду человечества на выживание.

Это сообщение отредактировал(а) Rickert - 26.8.2006, 18:46


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
MAKCim
Дата 26.8.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

А если тебе в вечерней газете напишут, что программировать опасно для жизни - ты бросишь?

глупые аналогии, даже не хочу комментировать
Цитата

А время на обращение по адресу?

И при чем здесь константность?
ты хочешь сказать что этот код
Код

...
int a=6;
int b=a;
...

выполниться быстрее чем этот?
Код

...
const int a=6;
int b=a;
...

вообще константность в стеке - контроль со стороны компилятора, в глобальной области видимости - возможное размещение в сегменте константных данных
Цитата

Своим умом жить надо. #define как неотъемлемая часть C++

#define к самому языку С++ не имеет никакого отношения, это лишь средство препроцессора языка
Цитата

Или приводи полноценный аргумент, а не на дохлого страуса ссылку давай.

А я с аргументами Страуструпа согласен и не собираюсь их тебе приводить, захочешь - прочитаешь
Да еще, прежде чем человека оскарблять, сделай то, что сделал он, лучше

Это сообщение отредактировал(а) MAKCim - 26.8.2006, 20:02


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.