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

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

Войти
Регистрация
Восстановить пароль
 
Мариам
 Аватар для Мариам
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 10
#1

Const в конце строки - C++

23.09.2013, 22:39. Просмотров 366. Ответов 2
Метки нет (Все метки)

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

ComplexNumber const operator + (ComplexNumber const & cmpx) const
{
return ComplexNumber(m_real + cmpx.GetReal(), m_img + cmpx.GetImg());
}

ComplexNumber const operator - (ComplexNumber const & cmpx) const
{
return ComplexNumber(m_real - cmpx.GetReal(), m_img - cmpx.GetImg());


ComplexNumber название класса далее зачем const? и после перегрузки оператора тоже для чего он???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 22:39     Const в конце строки
Посмотрите здесь:

C++ Обрезать пробелы в конце строки.
C++ работа со строками, мусор в конце строки
Пробел в конце строки C++
const в конце объявления метода делает только *this константным? C++
C++ Почему выводит в конце строки мусор?
C++ Поиск самой длинной строки в const char**
Мусор в конце строки C++
Убрать пробелы в конце строки C++
C++ strtok_s ломается в конце строки C++
Как избавиться от мусора в конце строки? C++
Убрать мусор в конце строки C++
C++ Отрезание пробелов в начале и в конце строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
23.09.2013, 22:56     Const в конце строки #2
Вы уже видели данный пост, но все же: Const в функциях-членах класса
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6350 / 2997 / 296
Регистрация: 04.12.2011
Сообщений: 8,043
Записей в блоге: 3
24.09.2013, 00:29     Const в конце строки #3
Мариам, const это ключевое слово которое информирует компилятор, что что-то изменять нельзя.
const int a = 3;//даже инициализировать нужно в момент объявления потому-что
a = 4; //уже не компилируется.
Теперь о методах экземпляра класса (оператор это тоже метод экземпляра вызываемый особым образом)...
Скорее всего перегружать операторы + и - с типом возврата const это неправильно. Потом не сможете использовать результат для модификации полей.
А слово const между закрывающей скобкой сигнатуры объявления (круглой) и открывающей скобкой тела (фигурной), говорит о том, что это константный метод. Это уведомление компилятору о том, что Вы не намерены изменять поля класса. По-этому компилятор не даст вам это сделать и явно, и вызвать не константный метод. Компилятор не умеет отслеживать изменяете ли Вы поле класса или нет при вызове не константного метода и ему достаточно подозрения, что Вы сможете это сделать в принципе. По-этому попытку прямого изменения поля или вызов не константного метода в константный компилировать не будет. Об этом написано везде. Почитайте.

Добавлено через 12 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Скорее всего перегружать операторы + и - с типом возврата const это неправильно. Потом не сможете использовать результат для модификации полей.
Это я типичную глупость сморозил. На ночь глядя.
Yandex
Объявления
24.09.2013, 00:29     Const в конце строки
Ответ Создать тему
Опции темы

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