Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В чем разница??? 
V
    Опции темы
jonie
Дата 12.10.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

jonie, мог бы ты пояснить в чем гемор? и скажите.
1) Почему по ссылке возвращать нельзя?
2) Почему ты сказал, что вернется указатель на локальную переменную, там же вроде либо копия объекта возвращается либо ссылка.
потому что ссылка есть ничто иное как указатель (это введено для упрощения синтаксиса). локальные переменные храняться в стеке.
гемморой - потому что у тебя будет указатель на стек, и неизвестно кто и когда его будет использовать.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
J0ker
Дата 14.10.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(yngwie19 @ 12.10.2008,  00:06)
Скажите пожалуйста в чем разница, когда мы из функции возвращаем копию объекта, или ссылку объекта?
Например так:
Код


int func(int b = 5) {return b;}
int a = func();

 
или так:
Код

int& func(int b = 5) {return b;}
int a = func();

вариант номер два неверный
b является локальной для функции


--------------------
user posted image
PM MAIL   Вверх
yngwie19
Дата 14.10.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



J0ker, т.е мы можем возвращать только глобальные и статические объекты ?
PM MAIL   Вверх
J0ker
Дата 14.10.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(yngwie19 @ 14.10.2008,  21:51)
J0ker, т.е мы можем возвращать только глобальные и статические объекты ?

не обязательно
во-первых можно возвращать объекты, переданные в функцию по ссылке или по указателю:
Код

T &foo(T &x)
{
    return x;
}

T &foo(T *px)
{
    return *px;
}


во-вторых можно (но обычно не нужно) возвращать динамические объекты:
Код

T &foo()
{
    T *px = new T();
    return *px;
}


возвращение по ссылке широко применяется в операторах, т.к. позволяет снова использовать возвращаемое значение как операнд.



--------------------
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.