2016-08-07 7 views
-9

「= 2.0」が コンストラクタのすべての引数の後に存在している理由しかし、私は理解していない..私はC++で始めていると私はクラスのこのコードC++のコンストラクタはすべての引数に "= 2.0"を付けていますか?

class Box 
{ 
    public: 
    static int objectCount; 
    // Constructor definition 
    Box(double l=2.0, double b=2.0, double h=2.0) 
    { 
    cout <<"Constructor called." << endl; 
    length = l; 
    breadth = b; 
    height = h; 
    // Increase every time object is created 
    objectCount++; 
    } 
    double Volume() 
    { 
    return length * breadth * height; 
    } 
private: 
    double length;  // Length of a box 
    double breadth; // Breadth of a box 
    double height;  // Height of a box 
}; 

を見つけました誰かが私を説明することはできますか?

+4

C++を使い始めるのであれば、初心者のC++ブックを読むほうが効率的かもしれません。 – juanchopanza

+3

これらはデフォルトの関数引数です。そのことについては、 –

+0

juanchopanza - >それを検索してください。 – gigi

答えて

0

これは、関数またはメソッドのパラメータのデフォルト値です。関数/メソッド呼び出しでこのパラメータが指定されていない場合、関数/メソッド呼び出しではデフォルト値が使用されます。これにより、必須ではなく、オプションでパラメーターが効果的になります。オプションのパラメータは、必要なパラメータの次になければなりません。必要なパラメータは、オプションのパラメータの後に続くことはできません。

コンストラクタは事実上、この質問の目的のためのメソッド呼び出しです。ここでの最終結果は、このクラスのコンストラクタへのすべてのパラメータがオプションであることです。指定されていない場合は、デフォルトで2.0になります。

0

これらはデフォルト引数です。あなたが尋ねる特定の関数がクラスコンストラクタであるという事実は特別なものではありません。 C++の関数はすべてデフォルトの引数を持つことができます。

関数が呼び出されると、明示的に何も書き込まないと、関数に渡されるのはデフォルトの引数です。

我々は

foo(9); 

ナインは、関数に渡される呼び出しを行う場合、我々は、今機能

foo(int m = 1) 

を宣言しましょう。ただし、電話をかけることもできます

foo(); 

今回は、番号1が機能に渡されます。

デフォルトの引数は、渡す内容を明示的に指定する必要がない場合、自動的に関数に渡されます。デフォルトの引数は、ある種のデフォルトの振る舞いを関数に持たせたい場合や、まれにしかまったく違うことをすることがあるような場合に便利です。

あなたが作業しているBoxクラスの場合、デフォルトの引数はある種の愚かな理由で作成されました。プログラマーが怠け者になり、箱の例を作り、それを使って遊ぶことができたのです。箱の最初の長さ、幅、高さを望むものを指定するのは煩わしいことではありません。

関連する問題