Non mi risulta che sia così. Infatti guarda questo piccolo esempio:

codice:
#include <iostream>

class Numero
{
public:
    Numero() {};

    void setNumero(int& num) {numero = num;}
    const int& getNumero() {return numero;}

private:
    int numero;
};


int main(int argc, char const *argv[])
{
    Numero n;
    int v = 1;

    n.setNumero(v);

    const int& a = n.getNumero();

    std::cout << "Numero: " << a << std::endl;
    return 0;
}

Poi, ci sono ovviamente dei problemi. Ad esempio, nell'esempio sopra non puoi fare

codice:
n.setNumero(2);

perché devi comunque passare un int&.