A atribuição inicial é obrigatória durante a declaração de uma variável do tipo reference, 
                como mostrado nos exemplos abaixo:
            
            Sintaxe
            
tipo_dado &ref = variavel;
            Exemplo 2
            
#include <iostream>
using namespace std;
int main()
{
    int a;
    int &ref = a;
}
            
            Saída
            
-
            
                O acesso ao valor de uma variável referenciada por uma reference/referência, 
                utilizamos o seu próprio nome, sem uso do operador (&), como pode ser visto abaixo:
            
            Sintaxe: alteração
            
variavel_referencia = valor;
            Sintaxe: acesso
            
variavel_referencia;
            Exemplo 3
            #include <iostream>
using namespace std;
int main()
{
    int a; //= 0
    int &ref = a;
    
    ref = 10;// acesso indireto
    cout << a << endl;
    cout << ref;
}
            Saída
            
10
            
                Uma vez que uma variável do tipo reference foi atribuída a uma variável, não pode mais ser atribuída 
                novamente. Uma reference pode ser "vista" como uma constante(const).
            
            Exemplo 4
            
#include <iostream>
using namespace std;
int main()
{
    int a;
    int &ref = a;
    
    int b;
    &ref = b; //Irá gerar erro
}
            Saída
            
main.cpp: In function ‘int main()’:
main.cpp:10:5: error: lvalue required as left operand of assignment
         10 |     &ref = b;
            
            
                As operações aritméticas de incremento e decremento são aplicadas ao valor da variável a qual uma 
                reference está atribuída. Outras operações aritméticas não são aceitas.
            
            Exemplo 5
            
#include <iostream>
using namespace std;
int main()
{
    int a = 99;
    int &ref = a;
    cout << a << endl;
    ref++; //incrementando variável a
    cout << ref << endl; //acessando valor de a
}
            Saída
            
99
100