著書 C++ Primer by Stanley B. Lippman* , * Josée Lajoie
クラスコンストラクターの第14.2章では、次のように述べています。
期首残高を指定するがクライアント名を指定しないサポートも提供する必要がありますか? たまたま、クラス仕様はこれを明示的に禁止しています。デフォルトの 2 番目の引数を持つ 2 つのパラメーターのコンストラクターは、ユーザーが設定できるクラス Account のデータ メンバーの初期値を受け入れるための完全なインターフェイスを提供します。
class Account {
public:
// default constructor ...
Account();
// parameter names are not necessary in declaration
Account( const char*, double=0.0 );
const char* name() { return _name; } // What is this for??
// ...
private:
// ...
};
以下は、1 つまたは 2 つの引数をコンストラクターに渡す正当な Account クラス オブジェクト定義です。
int main()
{
// ok: both invoke two-parameter constructor
Account acct( "Ethan Stern" );
単一の引数で宣言されていない場合、これはどのように2パラメーターコンストラクターを呼び出しますか??
Account *pact = new Account( "Michael Lieberman", 5000 );
そして、上記の行はどのようにデフォルト引数でコンストラクターを呼び出しますか
if ( strcmp( acct.name(), pact->name() ))
// ...
}
この本は不完全なコードで非常に不明確なようです。コンストラクターに関する適切な説明が必要です。どうか明らかにしてください。