Erst mal ist p p1(); nicht richtig. Korrekt wäre p p1;, aber selbst dann tut sich noch nicht viel, weil die Klasse p keinen Standardkonstruktor hat. Änder dafür am besten Zeile 7 in public: p(char *n = "")
Ansonsten noch ein paar allgemeine Anmerkungen.
Deine Formatierung ist wie du selber angemerkt hast, grauenhaft.
Für so ne Übung mag das überflüssig erscheinen, aber aussagekräftige Namen für Klassen, Objekte, Variablen, Funktionen usw. sind Pflicht.
In C++ haben die Headerdateien keine Endung. Was du da schreibst, macht dein Programm zu einer wilden Mischung aus C und C++.
Du hast den Zeilenumbruch beim Output von getn vergessen.
Die Mainfunktion heißt normalerweise int main(int argc, char** argv), auch wenn die meisten Compiler int main() oder sogar void main(void) akzeptieren.
Nicht nötig, aber guter Stil: statt return 0; kann man zumindest in ANSI C return EXIT_SUCCESS schreiben. bei C++ bin ich mir nicht 100% sicher, aber ich würd mich wundern, wenns anders wär.
Mal ne bearbeitete Version (funktioniert bei mir)
Für conio.h hab ich jetzt auf die Schnelle die C++ Variante nicht gefunden.