-1

私は自分の本を読んでいますが、「すべてのパラメーターにデフォルトの引数を提供するコンストラクターは、デフォルトのコンストラクターも定義します」と書かれています。

したがって、次のコードで:

class Book {

    public: 

    int pages = 25;
    double price = 10.0;
    std::string font = "Times New Roman";

    Book() {}
    Book(int n, double p, std::string f): pages(n), price(p), font(f) { }
};

パラメーターを取らないコンストラクターと、そのパラメーターに既定の引数を指定するコンストラクターの両方が既定のコンストラクターですか? または、デフォルトの引数では、2 番目のコンストラクターが次のようになる必要があることを意味します: Book(): pages(5), price(46), font("Times New Roman") {}

4

4 に答える 4

3

コンストラクターを明示的に*呼び出さずにオブジェクトを構築できる場合は、デフォルトのコンストラクターがあります。クラスにはデフォルトのコンストラクターがあります。

  • コンストラクタを作成しない場合。( = default)

  • 引数なしでコンストラクタを作成した場合。

  • すべての引数がデフォルト値を持つコンストラクターを作成する場合。


ステートメントをクリアするには、以下のようなオブジェクトを作成する能力が必要です。

Book book;
于 2013-10-24T19:23:56.083 に答える
1

すべてのパラメーターに既定の引数を提供するコンストラクターは、既定のコンストラクターも定義します。

これは、デフォルトのパラメーターを使用することを意味します。あなたの例では、これは次のことを意味します:

Book( int n = 5, double p = 46, std::string f = "Times New Roman" ) :
    pages( n ),
    price( p ),
    font( f ) {}
于 2013-10-24T19:23:28.837 に答える
0

あなたはコンストラクタのタイプについて取っています。そのため、コンパイラによるデフォルト コンストラクタ、デフォルト引数を持つプログラマによるデフォルト コンストラクタ、デフォルト引数のないプログラマによるデフォルト コンストラクタの 3 つがあります。つまり、あなたは2番目のタイプについて話しているのです。はい、これはデフォルト構成の一種です

于 2013-10-24T19:43:53.410 に答える