私のクラスには多くのコンストラクタがあり、コンストラクタではたくさんあるので、コードの再利用を促進するprivate construct()関数を作ることを考えていました。これは良いアイデアですか?なぜなら、これをしていない多くのライブラリがあり、コードの重複があるからです。建設機能を持つことは適切ですか?
おかげ
私のクラスには多くのコンストラクタがあり、コンストラクタではたくさんあるので、コードの再利用を促進するprivate construct()関数を作ることを考えていました。これは良いアイデアですか?なぜなら、これをしていない多くのライブラリがあり、コードの重複があるからです。建設機能を持つことは適切ですか?
おかげ
これは完全に問題なく、おそらく良い考えです。何が起こっているかは、非常に多くのコンストラクタがあることです。しかし、言うことは不可能です。
あなたは自動ソーダミーになっていない限り、仮想関数ではないことを確認してください。 –
は、一般的な方法で問題に対処しthis questionを見て、ください。
construct
は仮想ではない限り、一般的に安全です。私は他の方向に行くことを好む傾向がある。
できるだけ一般的なコンストラクタを少なくし、使いやすい便利なコンストラクション関数がたくさん必要な場合は、コンストラクタを呼び出し、欠落しているパラメータを適切な値で埋め込みますデフォルト値を返し、次に構築されたオブジェクトを返します。
このようにして、まだ構築されていないオブジェクトのメンバ関数を呼び出すコンストラクタの問題が回避され、クラス内でコードが重複しないようにします。
コンストラクタから仮想関数を呼び出すときは注意してください。期待通りに動作しないかもしれません。呼び出されるバージョンは、実際に作成されているものに属するものではなく、現在コンストラクタが呼び出されているクラスに属するバージョンになります。 – Dawson
コンストラクタがたくさんある理由は何ですか?コンストラクタの違いは何ですか? –
@Alf P. Steinbach彼らは非常に小さく、文字列のようなもので、利便性を追加するだけのものです。 – jmasterx