Обсуждение:Си++: различия между версиями

Содержимое удалено Содержимое добавлено
→‎Ссылки: Новая тема
Строка 40:
Такой взгляд сразу упрощает все, многие объяснения различий становятся не нужны. Рекомендую.
[[Служебная:Contributions/212.192.181.76|212.192.181.76]] 10:59, 11 марта 2008 (UTC)
 
 
 
<hr>
Дело в том, что реализация ссылок зависит от контекста в котором они описаны в программе. И далеко не всегда ссылка имеет смысл просто алиаса пременной (ее адреса), например:
 
<pre>
void do_work( int & reference )
{
reference = reference + 1;
}
 
void main( )
{
int a = 1;
int b = 2;
int c = 3;
 
do_work( a );
do_work( b );
do_work( c );
}
</pre>
 
Здесь, если функция "do_work" не описана как inline, ссылка "reference" реализуется путем автоматического выделения памяти для нее (чтобы хранить там адрес переданной переменной) на стеке всякий раз при вызове этой фукции, и увеличение значений переменных a, b и c происходит не напрямую, а косвенно (как через указатель). Если бы функция была объявлена как inline, компилятор мог бы просто подставить адреса этих переменных непосредственно в код тела функции при каждом вызове этой самой функции.
 
[[Участник:Wikibooks user|Wikibooks user]] 15:21, 17 июля 2008 (UTC)
<hr>
Вернуться на страницу «Си++».