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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
2e1773ce
6 / 6 / 0
Регистрация: 10.03.2013
Сообщений: 96
#1

const& и const* в имени функции - C++

03.06.2013, 17:43. Просмотров 1179. Ответов 5
Метки нет (Все метки)

Объясните пожалуйста что значит const& и const* в имени и параметрах функции(пример из Вандевурд,Джосаттис):
C++
1
2
3
template <typename T>
inline T const& max(T const& a , T const& b){}
inline T const* max(T const* a , T const* b){}
в параметрах константная ссылка и константый указатель , а в имени? :O
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 17:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос const& и const* в имени функции (C++):

Что это bool operator== (const CLASS&) const; - C++
Что это? class CLASS { public: bool operator== (const CLASS&amp;) const; ...

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

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

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" - C++
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include &lt;iostream&gt; template&lt;typename T&gt; inline const T...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
03.06.2013, 17:49 #2
T const& a -- ссылка на неизменяемый объект типа T
T const* a -- указатель на неизменяемый объект типа T
То есть вы не сможете вызвать неконстантные методы объекта a.
Тут в комментах это неплохо обсудили: http://habrahabr.ru/post/137375/
0
2e1773ce
6 / 6 / 0
Регистрация: 10.03.2013
Сообщений: 96
03.06.2013, 18:05  [ТС] #3
а перед именем функции зачем ставить const& / const* ?

Добавлено через 4 минуты
Забавно что на хабре 41 % ответил неправильно)
0
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
03.06.2013, 18:21 #4
С той же целью -- чтобы вернуть указатель/ссылку на неизменяемый объект.
1
Kastaneda
03.06.2013, 21:55
  #5

Не по теме:

Цитата Сообщение от 2e1773ce Посмотреть сообщение
Забавно что на хабре 41 % ответил неправильно)
73% ответили неправильно, 41 это просто самый популярный ответ. На хабре сейчас много школьников и бездарных студентов сидит, поэтому удивляться не чему

0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
03.06.2013, 22:37 #6
http://www.parashift.com/c++-faq-lit...rrectness.html
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 22:37
Привет! Вот еще темы с ответами:

Const в параметрах. Перед чем нужно употребить const дабы обезопасить данные от изменения - C++
const int Counter(const TSNum *Start) { int c=0; while(Start!=NULL){Start=Start-&gt;next;} return c; } Функция...

Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *' - C++
Unit1.cpp(59): E2034 Cannot convert 'char const' to 'const wchar_t *' Full parser context Unit1.cpp(55): parsing: void _fastcall...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Cannot convert 'const wchar_t *' to 'const char *' - C++
HMODULE hMod=GetModuleHandle(NULL); if(!hMod) { } HRSRC hRes=FindResource(hMod,&quot;acc.dll&quot;,RT_RCDATA); if(!hRes){ } HGLOBAL...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.06.2013, 22:37
Ответ Создать тему
Опции темы

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