|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.07.2015, 13:24 | #1 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
Нарушение инкапсуляции
Всем доброго дня !
Столкнулся с такой бедой. В классе Vita есть метод void hgh(int a) со спецификатором const Код:
Ведь я же фактически меняю данные |
14.07.2015, 13:31 | #2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
потому что, констом будет х (указатель), а не данные на которые он указывает.
ошибкой будет x = &a |
14.07.2015, 13:36 | #3 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
Проблема в том, что не понимаете разницу между
const int* x; int const* x; const int const* x; В том то и дело, что меняете данные, указатель остается тот же.
Помог? Оставляем отзыв =)
|
14.07.2015, 14:27 | #4 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
const int* x; - это указатель на константу
int const* x; - это константный указатель (в данном случае выполняется) const int const* x; - это константный указатель на константу |
16.07.2015, 12:48 | #5 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
Садись, два! =)
const int* x; int const* x; const int const* x; Это разные вариации записи одного и того же - указателя на const int. константный указатель int* const int константный указатель на константу: int const* const x; const int* const x; const int const* const x; все поля класса рассматриваются как const, а поле - указатель в вашем случае будет int* const x - константный указатель, а не const int* x;
Помог? Оставляем отзыв =)
|
16.07.2015, 18:29 | #6 | |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Цитата:
Упадёт - если вызвать конструктор по умолчанию или если установите в конструкторе 0
Если помог, тут весы есть , Вам не сложно, а мне приятно.
|
|
18.07.2015, 15:37 | #7 | |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
Цитата:
в практике достаточно 3 const int *p - указатель на константу int *const p - конст. указатель const int *const p - конст. указатель на конст. ___________________ если я напишу Код:
Код:
|
|
18.07.2015, 16:00 | #8 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
У Вас пробелы в знании С++, функции тоже бывают const, тем самым изменении содержимого класса запрещено, хорошо помогает и стимулирует, при функциях get.
Код:
одна используется Код:
Код:
ЗЫ: Можете посмотреть копирование типо strcpy() Удевитесь, там одни консты, и никому не страшно от этого, инкременируют как хотят
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 18.07.2015 в 16:02. |
19.07.2015, 16:24 | #9 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
Код:
|
19.07.2015, 19:11 | #10 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Кстати их тоже может быть 2 Вообще, чем больше в объекте инструментов для его использования, тем лучше, ещё лучше если это обвёрнуто в операторы.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нарушение параллелизма: DELETECOMMAND | fisher79ru | C# (си шарп) | 0 | 01.06.2015 01:13 |
Нарушение прав доступа | Negent | Общие вопросы C/C++ | 2 | 19.07.2014 01:44 |
Нарушение профиля | HellMercenariess | О форуме и сайтах клуба | 6 | 25.08.2012 11:43 |
Проявление инкапсуляции | ddr9225 | Общие вопросы C/C++ | 9 | 28.01.2010 00:06 |
Нарушение доступа | Perception | Помощь студентам | 9 | 11.07.2008 14:44 |