\b;Referências (para especialistas)
CBOT usa referências para  \l;classes\u cbot\class; e \l;matrizes\u cbot\array;. Qualquer variável de classe contém uma referência para a instância. A instância contém os campos da classe. Várias referências podem referenciar a mesma instância. Uma referência \c;\l;nula\u cbot\null;\n; não referencia nada. Você pode comparar uma instância a uma mala e uma referência a um portador. Uma mala pode ser carregada por mais de um portador. Um portador que não carrega malas é uma referência \c;\l;nula\u cbot\null;\n;.

Exemplos:
\c;\s;{
\s;	MinhaClasse item1(); // cria uma nova instância
\s;	                 // referenciada por item1
\s;	MinhaClasse item2;   // cria uma referência nula
\s;	item2 = item1;   // copia a referência,
\s;	                 // item2 e item1 agora referenciam
\s;	                 // a mesma instância
\s;	item1.a = 12;    // modifica a instância
\s;	                 // referênciada por item1 (e item2)
\s;	message(item2.a);// exibe 12
\s;}
\n;
Se você passar uma instância de \l;classe\u cbot\class; como parâmetro para uma função, a função somente recebe a referência para a instância. Isto significa que se você modificar a instância na função, a instância que foi informada na chamada da função também será modificada.

\c;\s;void Teste( MinhaClasse item )
\s;{
\s;	item.a = 12;          // modifica a instância original
\s;	item = new MinhaClasse(); // nova instância local
\s;	item.a = 33;          // modifica a instância local
\s;}
\n;
Chamando a função \c;Teste()\n;:
\c;\s;{
\s;	MinhaClasse toto();
\s;	Teste(toto);
\s;	message(toto.a);  // displays 12
\s;}
\n;
A instância contendo o campo \c;a = 33\n; é referenciada somente pela nova instância criada (\c;item\n;) dentro da função \c;Teste\n;. No fim de \c;Teste\n;  esta nova instância referênciada por \c;item\n; é automaticamente excluída.

Uma função pode retornar uma instância:
\c;\s;MinhaClasse Teste2( )
\s;{
\s;	MinhaClasse item = new MinhaClasse();
\s;	item.a = 33;
\s;	return item;
\s;}
\n;
Chame a função deste jeito:
\c;\s;{
\s;	MinhaClasse toto;
\s;	toto = Teste2(); // toto irá conter uma referência
\s;	                // a instância criada por Teste2()
\s;	message(toto.a); // exibe 33
\s;}
\n;
\t;Veja também
\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
\l;Programação\u cbot;, \l;tipos\u cbot\type; e \l;categorias\u cbot\category;.
