|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » [решено] [C++] *Теория* | Что значит возвратить ссылку? |
|
[решено] [C++] *Теория* | Что значит возвратить ссылку?
|
Новый участник Сообщения: 1 |
Профиль | Отправить PM | Цитировать Я прочитал несколько книг по C++, где объясняется возвращение ссылки функцией, но так и не понял суть этого вопроса.
Объясните пожалуйста что значит возвратить ссылку. Например есть следующий пример кода: Что конкретно возвращает функция? В чем основной смысл? |
|
Отправлено: 15:00, 25-02-2007 |
Пользователь Сообщения: 95
|
Профиль | Сайт | Отправить PM | Цитировать Оператором new ты выделяешь 20 байт в памяти.
Далее возвращаешь указатель на этот кусок памяти, грубо говоря указатель - это адрес 1 элемента куска памяти. |
------- Отправлено: 15:55, 25-02-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 18:38, 25-02-2007 | #3 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать DillerInc
Вообще-то, в языке C++ ссылки и указатели это разные понятия. Если по простому, то ссылка это указатель, который всегда на что-то указывает, значение которого нельзя изменить (именно указателя, а не того, на что он указывает; т.е значение устанавливается только один раз - при связке ссылки с тем, на что она ссылается), и весь синтаксис работы со ссылками такой же как с обычными переменными, а не указателями. JJester Цитата:
А про кореектное использование ссылок лучше почитать в какой-нибудь хорошей книге. Например, перегруженный operator= как правило возвращает ссылку. (В результате можно делать трюки вроде while ((token = next_token()) != LAST_TOKEN) do_something(); со своими произвольными классами) |
|
------- Отправлено: 00:39, 26-02-2007 | #4 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать ещё полезные примеры использования ссылки
// аналог with в делфи: // допустим есть структура struct1_type struct1, в ней struct2_type struct2, в ней int field1, int field2, ...; // без ссылок: struct1.struct2.field1 = 1; struct1.struct2.field1 = 2; ... // со ссылкой: { struct2_type& s(struct1.struct2); s.field1 = 1; s.field2 = 2; ...; } // void Window::setText(const string& s) // Point Window::setMeasure(const string& s); // class Form1 : Window {...}; void TForm1::setText(const string& s) { setMinimumSize(measureText(s)); // не копируется, а передаётся та же строка (её адрес) Window::setText(s); // опять не было копирования } ... // создалась переменная типа string, инициализировалась строкой // потом от неё взялся адрес и отправился в виде ссылки как параметр Form1::setText // при выходе из функции string уничтожился form1.setText("Form1 caption"); |
|
Отправлено: 22:48, 28-02-2007 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
7 / 2008 R2 - [решено] что значит ошибка 0xc000035a ? | paravozik2009 | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 4 | 12-12-2009 00:08 | |
OpenBSD - Что значит сдесь написанное??? | Srednas | Общий по FreeBSD | 1 | 22-01-2008 13:34 | |
OpenBSD - Что значит сдесь написанное??? | Srednas | Общий по FreeBSD | 0 | 22-01-2008 12:49 | |
Разное - [решено] что значит OEI в лицензии на windows, office? | vvsnik | Лицензирование продуктов Microsoft | 4 | 10-11-2007 14:39 | |
Что значит эта ошибка | indigo | Microsoft Windows 95/98/Me (архив) | 3 | 04-10-2002 15:02 |
|