2016-04-10 5 views
-1

Ich bin gerade von C nach C++ umgezogen, also versuche ich, die Unterschiede zwischen Klassen und Strukturen zu verstehen. Ich baue einen Code, der sich mit binären Suchbäumen beschäftigt, und ich benutze Klassen.Zugriff auf Getter-Funktionen innerhalb einer Klasse mit Zeigern

Ich weiß, ich sollte nicht direkt auf private Variablen zugreifen, daher sollte ich get Funktionen verwenden. Ich baue rekursiven Funktionen, damit ich Objektzeiger verwenden:

Node* insertion(Node* root,int val); 
int checkheight(Node* root); 
Node* rotate(Node* root, direction direction); 

Wenn ich den richtigen Sohn des rechten Sohn eines Knotens zugreifen wollen, muss ich etwas schreiben müssen, wie:

if(root->getrson()->getrson() != nullptr) 

Wird dieser Code funktionieren? Gibt es eine "natürlichere" Art, es zu schreiben? Sollte ich in diesem Fall einfach Strukturen anstelle von Klassen verwenden?

+0

_ "Funktioniert dieser Code?" _ Nun, haben Sie es versucht? –

+1

"verstehe die Unterschiede zwischen Klassen und Strukturen". Keine, außer Strukturelemente sind standardmäßig öffentlich, während die Klassenmitglieder privat sind. Kein anderer Unterschied. Wie ist das relevant für die Frage? –

+0

Ich schreibe immer noch und ich habe mich gefragt, ob ich nicht meine Zeit verschwenden über 200 Zeilen Code – PanthersFan92

Antwort

0

Ja, es wird funktionieren und dies ist die "natürliche" Art, dies zu tun, wenn Sie Getter-Funktionen verwenden.

Wenn Sie eine Struktur stattdessen verwenden, dann würde die Linie nicht viel anders aussehen:

if(root->rson->rson != 0) 

die Effizienz des Anrufs zu erhöhen, können Sie die Getter Funktionen inline machen. Die meisten Compiler tun dies jedoch implizit standardmäßig für die Optimierung, daher sollte es nicht notwendig sein. In diesem Fall gibt es keinen Overhead bei der Verwendung von Getter-Funktionen.