¿Es correcto guardar un objeto en un binario?

el siguiente código tiene una clase y guarda un objeto en un binario. Tradicionalmente, se hace un struct que guardará el atributo int en el binario. Pero el código tal como está funciona. Mi pregunta es, puede usarse un código así? Es “legal”? Puede ser peligroso por alguna razón?

#include <iostream> #include <fstream> using namespace std;  class A{     int a; public:      A(int a_):a(a_){}     ~A(){}      int Ver(){return a;} };  int main(int argc, char *argv[]) {     fstream archivo("dato.dat", ios::binary | ios::in | ios::out | ios::trunc);     if(!archivo.is_open()){         cerr << "Error al abrir dato.dat";     }else{         A objeto(4);         archivo.write(reinterpret_cast<char*>(&objeto),sizeof(objeto));     }     archivo.close();     return 0; }