Derzeit diese Hierarchie von Objekten aufbauend und in der Lage sein, die Protokollierung in der Basisklasse ein wenig klarer zu machen, entschied ich mich für eine Art von Variable oder Funktion, die den Typ der Klasse zurückgibt.Objektkennung, Rückgabewert oder Variable?
Zum Beispiel:
class fruit {
string _type;
fruit() {
_type = "base"; // or i dont have to set it. however, it wont be inforced
}
virtual const char* type() const { return "base"; } // or just = 0 to inforce it
void function() {
log(this->type(), " tastes good");
log(this->_type, "tastes good");
}
}
class apple : public fruit {
apple() {
_type = "apple";
}
const char* type() const { return "apple"; }
}
Wie Sie können es zwei Ansätze zu sehen ist und mich persönlich denke, dass der Rückgabewert Version ist viel sauberer, da es klar ist, dass es umgesetzt werden muss.
Meine Frage jedoch ist, welcher Ansatz der beste ist? Und ist es viel langsamer eine Funktion aufzurufen, wenn ich etwas logge? Ich bin nur davon ausgegangen, dass es optimiert wäre, aber ich kann mich irren.
das einzige, was ich benutze, ist die Protokollierung, um klar zu machen, welche dervied Klasse im Umgang mit. Ich brauche dafür ein char * und beschreibe die Klasse. Siehst du damit nichts falsch, oder? – chikuba
@ chikuba: Sieht in diesem Fall gut aus. Beachten Sie den Punkt über die Funktion rein virtuell zu machen. –
nicht allzu sicher, was Sie von "Sie wollen nicht auf Ihr Programm, um sich auf konkrete Neuerungen verlassen, sondern auf Schnittstellen angewiesen sein." – chikuba