Okay.... wo fangen wir an. Am besten beim Stil: Gewöhn dir eine andere, lesbarere Klammernsetzung an und verwende nebenbei vielleicht eine andere Art und Weise, wie du Variablen, Klassen und Methoden benamst: Im Grunde ist bei dir ja alles klein geschrieben, Klassen groß, Methoden in CamelCase, und Variablen klein... so wird das ganze viel lesbarer. Sieh dir diesen Link - als kleinen Denkanstoß.
Gehen wir dann weiter zu Problem No. 1 -> Die Kontonummer
Im Grunde deklarierst du ein statisches Feld und setzt es bei jedem Konstruktoraufruf wieder auf einen Wert zurück. Sprich, es hat auch nach dem x-ten Objekt, dass du erzeugst, den gleichen Wert. Weiteres Problem: Wenn du mit num() versuchst, die Kontonummer zu erhöhen, haben - aufgrund des statischen Felds - auch alle Objekte wiederum die gleiche Kontonummer, und ich denke einmal, dass ist nicht erwünscht. Versuch stattdessen folgende Variante:
myktn wird der Platzhalter für jedes Objet, der die Kontonummer trägt, ktn als globale Variable ist der Zähler, der die aktuelle, freie Kontonummer trägt. Verwende btw. einen long, ich weiß nicht, wie groß Kontonummern werden können. MitKonstruktoraufruf sollte es dann so aussehen:
Ich weiß, es geht noch schöner, aber dafür hab ich keine Zeit. ktn wird dabei jedes Mal um eines erhöht, wenn du ein Objekt anlegst... myktn bleibt read-only und wird nicht verändert, und trägt die Nummer zur Erzeugung des Objektes.
Natürlich musst du dann deine Auszug auch ändern:
Schöner ist es übrigens, wenn du dir da einen String erzeugen lässt, anstatt cout zu verwenden, aber das ist eine andere Geschichte. num löschen wir, und zinse ändern wir auch etwas ab:
Warum? Nun... im Grunde willst du bei der Klasse kkk ja nur eine andere Verzinsung anwenden. Du hast allerdings eine weitere Methode dazu geschrieben, auch wenn sich nur eine Variable ändert. Mit virtual deklarieren (um auch ein spk *x= new kkk() erzeugen zu können) und überschreiben ist viel schöner! Du hast bei der Vererbung zwar richtig public abgeleitet, aber nicht mit Superkonstruktoren gearbeitet. Ausserdem hast du bei der Deklaration in der main-Methode auch ein paar Fehler drin, die deine Klassen nicht als Obhejte, sondern als structs erkannt haben, warum auch immer. Die neue, hübschere Klasse sieht so aus:
Wo genau die Fehler waren, weiß ich nicht mehr... ich hab einfach deinen Code hergenommen und ihn ausgebessert, um ein schöneres Bild zu bekommen... und danach hats funktioniert - einer der Schlauen wird dir sicher die Fehler erklären können, wenn er unsere Quelltexte vergleicht, ich hab keine Zeit dazu.
Der Schluß sieht auf jeden Fall so aus:
Und funktioniert auch.
Der gesamte Code (inklusive ein paar Überbleibsel deiner Fehler, grausamer Formatierung durch copy & paste und ein paar Kommentaren, die du dir hinter die Ohren schreiben solltest) ist noch einmal angehängt.