Un membro private di una classe è inaccessibile al 100% dall'esterno della classe?

Per esempio io non potrei fare:

codice:
#include <iostream>

using namespace std;


class Test
{
  private:
  int dato;

  public:
  void Imposta(int a);
  int * f();
};

void Test::Imposta( int a)
{
     dato = a;
     }

int * Test::f()
{
  return &dato;
  
}

int main()
{
    Test t;
    t.Imposta(100);
    int * x = t.f();
    *x = 22;
    
    cout << *t.f() << endl;
    system("pause");
    return 0;
    }
Il codice funziona eccome. In teoria solo la funzione Imposta(int) potrebbe modificare dato che è private... ma io ci riesco lo stesso!
Come mai??