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

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

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

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

23.09.2013, 22:39. Просмотров 384. Ответов 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 в конце строки
Посмотрите здесь:

const в конце объявления метода делает только *this константным? - C++
То есть const в методе int foo(int x, int y) const; говорит, что внутри метода не будут переопределяться поля класса, а точнее const...

Модификатор const для параметра функции не const? - C++
void foo(const int N) { int Arr; //<-- ??? } В clang это работает. В VisualStudio 2015 нет.

Поиск самой длинной строки в const char** - C++
Здравствуйте. Вот функция: template <> char* maxn<char*>(char** const ar, const int* limit) { int curmax = 0, absmax = 0, max_ind...

const& и const* в имени функции - C++
Объясните пожалуйста что значит const& и const* в имени и параметрах функции(пример из Вандевурд,Джосаттис): template <typename T> ...

Мусор в конце строки - C++
перенос фразы из строки wrd в nwrd, все время дописывает в конце мусор #include <iostream> #include <conio.h> using namespace std; ...

Знак в конце строки - C++
Добрый вечер, подскажите пожалуйста и подправьте мой код для того что бы добавить в конец строки знак " ! ", я заменяю последний символ а...

Убрать мусор в конце строки - C++
после произвольных символов букв выводится (эээээ<<<<<юоюою) for (int k = 0; k < 10; k++) { int x = (int)rand() / RAND_MAX +...

C++ strtok_s ломается в конце строки - C++
Здравствуйте уважаемые программисты, у меня проблема следующего содержания. Когда отдаю строку из файла, т.е. с \n и \0 он на последнем...

Почему выводит в конце строки мусор? - C++
Выводит нужную строку... и мусор в конце Переменная len принимает правильное значение При входе в первый цикл new_str получает двойной...

Как избавиться от мусора в конце строки? - C++
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <conio.h> #include <math.h> #include <ctype.h> #include...


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

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

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

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