現在、このオブジェクトの階層を構築しており、基本クラスでロギングをもう少し明確にできるようにするために、クラスの型を返すある種の変数または関数を使用することにしました。
例えば:
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"; }
}
ご覧のとおり、2つのアプローチがありますが、個人的には、実装する必要があることは明らかであるため、戻り値バージョンの方がはるかにクリーンだと思います。
しかし、私の質問は、どのアプローチが最良のアプローチであるかということです。そして、何かをログに記録するたびに関数を呼び出すのははるかに遅いですか?最適化されると思っていましたが、間違っている可能性があります。