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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
#1

Передача параметра по константной ссылке - что это? - C++

26.07.2014, 17:34. Просмотров 1192. Ответов 31
Метки нет (Все метки)

объясните мне пожалуйста что такое передача параметра в функцию по константной ссылке? я просто вообще не могу представить что значит & в параметре функции... 2 года как изучаю си, а такое увидел только недавно... & это же операция взятия адреса, я ее знаю только так... но как она может быть параметром убей не пойму...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2014, 17:34     Передача параметра по константной ссылке - что это?
Посмотрите здесь:

Передача по константной ссылке - C++
void print(const std::string strs, const char c); void print(const std::vector<std::string>& vstrs, const char c); Нужно организовать...

Передача std::string по константной ссылке \ значению - C++
Суть вопроса: есть простенький словарь с std::vector в качестве приватного поля. struct StudentGrade { std::string name; char...

Передача параметра по ссылке - C++
Всем здравствуйте. Други, помогите разобраться. Сидю :) вникаю в работу указателей и памяти, паралельно пытаюсь написать велосипед, в...

Передача параметра по ссылке - C++
Всем доброго времени суток. Понимаю что вопрос покажется очень глупым, но я уже несколько часов бьюсь и не могу решить эту элементарную...

Передача параметра по ссылке - C++
Здравствуйте! Подскажите пожалуйста! Делаю пример из книги: #include <iostream> #include <conio.h> using namespace...

Аллокация памяти при передаче string в функцию по константной ссылке - C++
Поясните пожалуйста данный пример: // C++11 #include <string> void get_vendor_from_id(const std::string& id) { // аллоцирует память,...

Как сделать доступным обращение к методу параметра, объявленного константной ссылкой? - C++
Ругается на строку, содержащую присваивание локальной переменной значения метода параметра, объявленного константной ссылкой. Метод...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2014, 17:37     Передача параметра по константной ссылке - что это? #2
Цитата Сообщение от GetHelp Посмотреть сообщение
2 года как изучаю си
Ссылки - это С++.
http://ru.wikipedia.org/wiki/Ссылка_(C%2B%2B)
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
26.07.2014, 17:38  [ТС]     Передача параметра по константной ссылке - что это? #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Ссылки - это С++.
я не делаю между ними разницы и пишу на помеси
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.07.2014, 17:39     Передача параметра по константной ссылке - что это? #4
& - так же как и в Си используется для взятия адреса, если применяется к переменной.
А если применяется к типу, то в C++ это означает ссылочный тип.
Если Вы знакомы с Си и передачей по указателю, то можете в первом приближении считать ссылку завуалированным указателем. Основное отличие, что указатель может в разное время указывать на разные объекты. А ссылка же после инициализации не может быть перекинута на другой объект.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
26.07.2014, 17:39     Передача параметра по константной ссылке - что это? #5
Цитата Сообщение от GetHelp Посмотреть сообщение
я не делаю между ними разницы
Вот и источник проблемы.
Владимир_1994
2 / 2 / 0
Регистрация: 19.05.2013
Сообщений: 27
26.07.2014, 17:40     Передача параметра по константной ссылке - что это? #6
Это когда функция просит на вход указатель. То есть
C
1
2
3
4
5
6
7
8
9
10
11
void swap(int *a, int *b){
int tmp = *a;
*a = *b;
*b = tmp;
};
 
int main(){
int x = 3;
int y = 5;
swap(&x,&y);
}
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
26.07.2014, 17:42  [ТС]     Передача параметра по константной ссылке - что это? #7
Tulosba, а зачем тогда пишут const еще? если она и так константна? и еще мне тут что то говорили про то что такой способ передачи лучше чем простая передача, типа тут копирования лишнего не происходит, о чем это вообще?

Добавлено через 41 секунду
Владимир_1994, это вообще не то...
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2014, 17:42     Передача параметра по константной ссылке - что это? #8
Цитата Сообщение от Tulosba Посмотреть сообщение
А ссылка же после инициализации не может быть перекинута на другой объект.
И не может быть равна 0, и не может быть неинициализированной.
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
26.07.2014, 17:48  [ТС]     Передача параметра по константной ссылке - что это? #9
да и еще как потом вызывать такую функцию и внутри нее обращаться к переменной ссылке?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
26.07.2014, 17:49     Передача параметра по константной ссылке - что это? #10
Цитата Сообщение от GetHelp Посмотреть сообщение
а зачем тогда пишут const еще?
1. Чтобы гарантировать неизменность объектов в вызывающем контексте.
2. Чтобы эту же функцию можно было использовать и для константных объектов.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.07.2014, 19:05     Передача параметра по константной ссылке - что это? #11
Цитата Сообщение от GetHelp Посмотреть сообщение
да и еще как потом вызывать такую функцию и внутри нее обращаться к переменной ссылке?
Вызывать и обращаться так же как и при передаче по значению. Переменная, переданная по константной ссылке, не может быть изменена в вызываемой функции, по не константной может, при этом изменения будут видны после выхода из функции, в отличие от переменной, переданной по значению.
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
26.07.2014, 19:09  [ТС]     Передача параметра по константной ссылке - что это? #12
uglyPinokkio, короче тогда я вообще не понимаю чем же она будет отличаться от обычного указателя? кроме разве что того что не надо писать при вызове &
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
26.07.2014, 19:11     Передача параметра по константной ссылке - что это? #13
Ссылка не может быть нулевая. Ссылку нельзя переназначить
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.07.2014, 19:12     Передача параметра по константной ссылке - что это? #14
Цитата Сообщение от GetHelp Посмотреть сообщение
короче тогда я вообще не понимаю чем же она будет отличаться от обычного указателя?
Для простоты - можно рассматривать как другую форму записи указателя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2014, 19:12     Передача параметра по константной ссылке - что это?
Еще ссылки по теме:

Как получить адрес параметра, передоваемого по ссылке? - C++
подскажите как получить адрес параметра, передоваемого по ссылке? void f(int &a...) { int *p = ????; for(int i = 0; i < 3;...

Передача по ссылке - C++
Здравствуйте. 1.typedef struct { MATRIXX_LENTA<double>* MATR; //Ленточная матрица } DATA_LENTA, *PDATA_LENTA; DWORD WINAPI...

Передача по ссылке - C++
С помощью функции rand() округлить значение double и передать его по ссылке.

Передача по ссылке - C++
В учебнике написано, что можно использовать функцию с левой стороны операции присваивания, если она возвращает ссылку. Например, так: ...

Передача значения по ссылке - C++
1. Объявите (в отельном заголовочном файле) и реализуйте (в другом файле) процедуры (они не возвращают значений!) согласно варианту. 2....


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

Или воспользуйтесь поиском по форуму:
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
26.07.2014, 19:12     Передача параметра по константной ссылке - что это? #15
GetHelp, выше уже писали о разнице:
1) у ссылки отсутствует null-семантика;
2) ссылка обязана быть инициализирована;
3) ссылка за время жизни может ссылаться только на один объект.
Yandex
Объявления
26.07.2014, 19:12     Передача параметра по константной ссылке - что это?
Ответ Создать тему
Опции темы

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