私は2つのプログラムを書いています。電卓とチェスゲームを考えてみましょう。彼らは多くのコード(インターフェイス管理、ファイルのオープン/保存)を共有しており、コードの繰り返しを避けるためのベストプラクティスを見つけようとしています。C++の派生クラスで繰り返しコードを避ける
私の考えは、親クラスを作成し、それをGeneric_Programと呼ぶことにしました。これはすべての共通関数を持ち、子クラスを派生させます。
私が遭遇する問題は、親クラスではなく派生クラスの関数を呼び出す方法です。設定を保存して終了とConrete例:今
class Generic_Program {
void SaveConfig() {
// Write general parameters to a file
}
void Exit() {
SaveConfig(); //First save configuration
// Configuration saved, do exit routines, like make window invisible, etc.
}
}
class Calculator : Generic_Program {
void SaveConfig() {
Generic_Program::SaveConfig(); //Write generic parameters
// Write calculator-specific data, like calculation results, etc.
}
}
class Chess : Generic_Program {
void SaveConfig() {
Generic_Program::SaveConfig(); //Write generic parameters
// Write chess-specific data, like player scores, etc.
}
}
、私は両方のプログラムからExit()
を呼び出すことができるようにしたいと思います。望ましい行動は、彼らが一般的なデータと特定のデータを保存してから終了することです。
私が上記のコードを実行すると、親クラスのSaveConfig()が呼び出され、汎用プログラムデータのみが保存されます。
もちろん、特定のExit()
子クラスのルーチンを書くこともできますが、そのポイントは共有コードを1回だけ書き込むことです。
親クラスの子どものSaveConfig()
を呼び出す方法はありますか?この場合繰り返しコードを避けるためのベストプラクティスですか?
を出口ルーチンを呼び出すため
。 –
http://stackoverflow.com/questions/2391679/why-do-we-need-virtual-functions-in-c – drescherjm
@drescherjm。ばっちり成功。 –