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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему возвращается адрес из метода 
V
    Опции темы
pvp
Дата 27.5.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



видел примерно такой класс
Код

class Point
{
   private:
   int x, y;
   public:
   Point() {x=y=0}
   Point & operator = (Point &p);
}

Point & Point::operator = (point &p)
{
   x = p.x;
   y = p.y;

   return *this;
}

подскажите почему возвращается адрес переменной из метода
PM MAIL   Вверх
Fazil6
Дата 27.5.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата(pvp @  27.5.2008,  12:36 Найти цитируемый пост)
подскажите почему возвращается адрес переменной из метода 

где ты тут видишь "возвращается адрес переменной из метода"?
PM MAIL   Вверх
pvp
Дата 27.5.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я извиняюсь,
может я не правельно понимаюю
что означает
Код

Point &

PM MAIL   Вверх
Fazil6
Дата 27.5.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата(pvp @  27.5.2008,  12:46 Найти цитируемый пост)
что означает

тебе стоит учебник почитать...
PM MAIL   Вверх
bronislav
Дата 27.5.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это возврат по ссылке.


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
pvp
Дата 27.5.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Fazil6 @  27.5.2008,  13:01 Найти цитируемый пост)
тебе стоит учебник почитать... 

в учебниках которые у меня есть. нет таких примеров.

буду искать и в других, но если не трудно подскажи.
PM MAIL   Вверх
bronislav
Дата 27.5.2008, 13:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

Point & Point::operator = (point &p)
{
   x = p.x;
   y = p.y;
   return *this;
}


В данном методе производится изменение объекта класса Point. И возвращается уже измененный объект класса. Это сделано для того чтобы можно было писать 
Код

Point a, b, c;
a = b = c;


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


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
pvp
Дата 27.5.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за разъяснение .
PM MAIL   Вверх
bsa
Дата 27.5.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



pvp
Код иллюстрирующий происходящее:
Код
void func1(int x)
{
   x = 1;
}
void func2(int *x)
{
  *x = 2;
}
void func3(int &x)
{
   x = 3;
}

int main()
{
   int a = 0, b = 0, c = 0;
   func1(a);
   func2(&b);
   func3(c);
   //теперь a == 0, b == 2, c == 3
   int &x = a;
   x = b; //x == b, x == 2
   x = c; //x == b, b == 3, x == 3
   --x; //x == b, b == 2, x == 2
   x *= 4; //x == b, b == 8, x == 8
}
По сути ссылка - это константный указатель (не путать с указателем на константу!), т.е. сделать чтобы ссылка ссылалась на другую переменную нельзя, поэтому нельзя сделать неинициализированную ссылку. Зато обращаться с ней можно, как с обычной переменной.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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