25. Ссылки

BGT поддерживает передачу параметров и возврат результата по значению и по ссылке.
Использование ссылок позволяет избежать затрат памяти и времени, необходимых на создании локальной копии объекта при передачи его в качестве параметра.
Для передачи параметра по ссылке необходимо в сигнатуре метода к типу соответствующего параметра или возвращаемого значения добавить символ & («амперсанд»), например:
class alpha
{
string name;

alpha (string name)
{
this.name = name;
}
}

void byValue (alpha a)
{
a.name ="Beta";
}

void byReference (alpha& a)
{
a.name = "Beta";
}

void main ()
{
alpha a("Alpha");

// Этот вызов не изменяет a,
// так как передается копия этого объекта.
byValue(a);
alert("Информация", "Имя: " + a.name);

// Этот вызов меняет a,
// так как передаётся ссылка на объект.
byReference(a);
alert("Информация", "Имя: " + a.name);
}
Такие ссылки используются только для передачи параметров и возвращаемых значений в методах и функциях.
У таких ссылок есть различные варианты, определяемые ключевыми словами:

  • in — используется для передачи по ссылке параметра, изменение которого внутри функции не скажутся на исходном значении. Такой вид ссылок рекомендуется использовать совместно с ключевым словом const в описании параметра;
  • out — используется для передачи ссылки на изменяемый параметр, через который будет возвращён результат работы функции или метода (если функция или метод должны вернуть более одного результата);
  • inout — комбинация первых двух.
Назад | Содержание | Вперёд

Поделитесь с друзьями

WordPress Lessons