Показать сообщение отдельно
Старый 28.08.2003, 17:19   #1  
parovoz is offline
parovoz
Участник
 
18 / 12 (1) ++
Регистрация: 28.08.2003
? Что передается функциям, ссылки или значения?
Подскажите пожалста, когда в функцию передается значение, а когда ссылка на него. В плохой документации ничего про это не нашел, а хорошей не имеем. Знающие люди сказали, что ссылок в аксапте нет вообще.
Однако, если в функцию (типа void) передается класс, а в теле этой функции меняется переменная этого класса, то после завершения функции получаем измененный объект. Так же все работает при операции присваивания.

предположительно, объекты классов и таблиц - передаются (и присваиваются) по ссылке, а вот переменные основных типов - по значению.

А вот и пример:
X++:
//Тестовый класс
class TestClass
{
    int a;
}

int fa(int _a = a)
{
    a = _a;
    return a;
}

static void incA(TestClass _nts)
{
    _nts.fa(_nts.fa()+1);
}

//Метод любого другого класса, ходим тут дебагером и смотрим.
void run()
{
    TestClass NTK1, NTK2;
    ;
    NTK1 = new TestClass();
    
    NTK1.fa(5);
    TestClass::incA(NTK1);
    //Тут NTK1 уже равен 6...

    NTK2 = NTK1;
    //Тут они оба равны 6.
    TestClass::incA(NTK2);
    //А тут равны 7. Оба!!!
   ;
}