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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,100
#1

Const после функции - C++

08.01.2013, 19:19. Просмотров 3516. Ответов 9
Метки нет (Все метки)

Здравствуйте! Объясните, пожалуйста, что делает тут const:
C++
1
2
3
4
double GetFrequency () const
{
          return m_frequency;
}
(Этот кусок взят из класса и можно ли так писать вне класса?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 19:19     Const после функции
Посмотрите здесь:

Const после функции - C++
Можно ли сказать что такая запись: void F(int a, int b)const заменяет эту: void F(const int a, const int b) ...

Ключевое слово const после декларации функции в классе - C++
Здравствуйте, у меня есть подобный класс-шаблон: template <typename Type> class Array { private: Type* ptr; // ...

Что означает const после круглых скобок функции - C++
всем привет. скажите, а что здесь значит const? int func(int var) const { return get; }

Для чего const после phone() - C++
const char* phone()const {return phone_;} Для чего const после phone()?

Ключевое слово const после ключевого слова new - C++
Наткнулся на такую запись const int* ciq = new const int (3); Какую роль играет const после new?

const char *[] в функции - C++
Прототип функции такой void deal(const int , const char *, const char *); А вот сама функция void deal(const int wDeck, const char...

Применение const в функции - C++
Подскажите как защитить массив от изменения в функции. #include <iostream> using namespace std; double igor(double mass,int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
08.01.2013, 19:31     Const после функции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В константных методах нельзя модифицировать значения членов класса. Указатель this в этих методах имеет тип const classname * const, вместо classname * const.

Для обычных функций он не применяется.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.01.2013, 20:14     Const после функции #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
[занудство]
Цитата Сообщение от Schizorb Посмотреть сообщение
В константных методах нельзя модифицировать значения членов класса.
Кроме тех, что объявлены как mutable.
[/занудство]
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,100
08.01.2013, 20:31  [ТС]     Const после функции #4
Значит я не с могу в методе менять значения переменных, заданных в классе, спасибо большое!
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
08.01.2013, 21:02     Const после функции #5
Так же только такие методы можно вызывать для константных объектов.
pety
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 116
29.03.2015, 16:01     Const после функции #6
дружественные функции так объявлять надо?
например
C++
1
2
3
4
5
friend std::ostream& operator<< (const std::ostream& ost, const verylong& x);
 
// или
 
friend std::ostream& operator<< (const std::ostream& ost, const verylong& x) const;
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
30.03.2015, 13:18     Const после функции #7
Цитата Сообщение от pety Посмотреть сообщение
дружественные функции так объявлять надо?
Если дружественные функции - это свободные функции, то нет, const после них не нужно ставить. const после функции применим только к методам класса.
pety
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 116
30.03.2015, 15:29     Const после функции #8
Получается такую функцию нельзя вызвать для константного объекта?
hoggy
6439 / 2657 / 460
Регистрация: 15.11.2014
Сообщений: 5,848
Завершенные тесты: 1
30.03.2015, 15:36     Const после функции #9
Цитата Сообщение от pety Посмотреть сообщение
Получается такую функцию нельзя вызвать для константного объекта?
нет, получается, что вы так и не поняли в чем суть константных функций-членов.

дружественная функция не является членом класса (даже если объявлена в нем).
это - обычная свободная функция.

а обычные свободные функции можно вызывать когда захотите.

и к состоянию объектов класса они не имеют никакого отношения вообще.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2015, 15:57     Const после функции
Еще ссылки по теме:

Обращение к контейнеру в const функции - C++
Есть примерно такой код: class a { map&lt;int, map&lt;int, bool&gt;&gt; matrix; bool IsEdgeExists(int pointFrom, int pointTo) const { ...

Const-параметры в аргументах функции - C++
А тут уже const излишен, перебор. Добавлено через 3 минуты void setDescription(const std::string&amp; _description) { m_description...

зачем в с++ писать в объявление функции const ? - C++
Доброго времени суток. Ответе на мой вопрос пожалуйста зачем в с++ писать в объявление функции const ? Пример : string MyFunc() const; ...

Ипользование const с указателем, параметром функции - C++
Здравия желаю!:) Хотелось бы узнать, как можно работать с параметрами-указателями при работе функций вроде void f1(char...

Пояснить про const в возвращаемом типе функции - C++
когда может понадобится написать такое: const int func(int i) { return i+5; } вопрос конкретно за const


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

Или воспользуйтесь поиском по форуму:
pety
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 116
30.03.2015, 15:57     Const после функции #10
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Class
{ 
     public:
     // ...
 
     friend std::ostream& operator<< (const std::ostream& ost, const verylong& x) {
          // Реализация не изменяет объект
     }
};
 
const Class cl;
 
cout << cl;  // Так можно?
Добавлено через 18 минут
ясно
Yandex
Объявления
30.03.2015, 15:57     Const после функции
Ответ Создать тему
Опции темы

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