-1

パラメータ化されたコンストラクターは、実際にクラスの属性を初期化するパラメーターのみを常に持つべきかどうか疑問に思っていました。たとえば、次のように呼び出します。

Texture background("C:\Documents\Images\background.png");

ファイル パスを保存する必要がない場合はどうすればよいですか?

4

3 に答える 3

0

パスを保存する必要がない場合は、コンストラクターに渡さないでください。:)

パラメーター化されたコンストラクターは、オブジェクトがインスタンス化されたときにすべての情報が確実に利用できるようにすることを目的としています。そのため、必要な情報のみを渡します。

RAII のイディオムに従いたい場合は、要求されたすべてのリソースをコンストラクターに渡し、リソースを解放します (オブジェクトがファイルやポートのようにそれらをロックしている場合)。

于 2015-11-05T19:32:53.510 に答える
0

オブジェクト コンストラクターは、有効で機能的なオブジェクトを返すために必要なパラメーターをすべて受け取ります。構文糖衣のための追加のパラメーターを持つコンストラクターを許可することはできますが、少なくとも、オブジェクトは有効なものでなければなりません。あなたの場合、テクスチャとして使用されるファイルがなければテクスチャは意味がないと思うので、そのパラメータを削除することはお勧めできません。

ただし、コードを簡単にテストできるようにすることも忘れないでください。その場合、特定のメソッドをテストするためにオブジェクトをインスタンス化する場合、複雑なコンストラクターは面倒です。最終的には、それは決定プロセスです。

于 2015-11-05T19:33:27.813 に答える