Russian Qt Forum

Программирование => С/C++ => Тема начата: OKTA от Октябрь 01, 2014, 16:08



Название: Интересно
Отправлено: OKTA от Октябрь 01, 2014, 16:08
Товарищи, кто может объяснить, как в памяти проходит такая хитрая работа с ссылкой?

Код
C++ (Qt)
class Foo
{
public:
   static int test(int *x) {
 
       x = new int;
       *x = 10;
       return *x;
   }
};
 
int main() {
 
   int x = 28;
 
   qDebug() << Foo::test(&x);
   qDebug() << x;
 
   return 0;
}

Вывод:

Код:
10
28


Название: Re: Интересно
Отправлено: Old от Октябрь 01, 2014, 16:57
Товарищи, кто может объяснить, как в памяти проходит такая хитрая работа с ссылкой?
Не очень понятно, что же вас удивляет.


Название: Re: Интересно
Отправлено: OKTA от Октябрь 01, 2014, 17:02
Ну грубо говоря то, что была ссылка, назначили ей другой адрес, а потом все вернулось на круги своя. Вот этот момент не понятен.


Название: Re: Интересно
Отправлено: Old от Октябрь 01, 2014, 17:05
Ну грубо говоря то, что была ссылка
Нет здесь ссылок. Указатели есть, ссылок нет.
Тот амперсанд означает "взять адрес объекта". :)


Название: Re: Интересно
Отправлено: OKTA от Октябрь 01, 2014, 17:10
Шайтан  ;D
Спасибо, Old)