0

私は C++ の初心者です。ユーザーに 3 つの入力を求めるだけのプログラムを作成しようとしています。2 つは文字列で、1 つは整数です。このために次のクラスを作成しました。

#include <string>
#include <sstream>

using namespace std;

class Cellphone
{
private :
        string itsbrand;
    string itscolor;
    int itsweight;

public :
    string tostring();
        void setbrand(string brand);
        string getbrand() ;
    void setcolor(string color);
    string getcolor();
    void setweight(int weight);
    int getweight();


};

2 つのコンストラクターが必要であることを除いて、すべてが必要なとおりに機能します。1 つはパラメーターにデータがなく、もう 1 つはパラメーターにデータがあります。コンストラクターから始めることさえ非常に混乱しているので、誰かが少し洞察を提供してくれれば、私はそれを大いに感謝します. これが私の main() です:

int main ()
{
  Cellphone Type;

  int w;
  string b, c;

  cout << "Please enter the Cellphone brand : ";
  getline(cin, b);
  Type.setbrand (b);
  cout << "Please enter the color of the Cellphone : ";
  getline(cin, c);
  Type.setcolor (c);
  cout << "Please enter the weight of the Cellphone in pounds : ";
  cin >> w;
  Type.setweight (w);
  cout << endl;
  cout << Type.tostring();
  cout << endl;
}

コンストラクターをどのように行うかについてのアイデアはありますか?

4

1 に答える 1

2

C++ クラスのコンストラクターはオーバーロードできます。

  1. パラメータが指定されていないコンストラクタは、通常、「デフォルト コンストラクタ」と呼ばれます。クラスでコンストラクターが定義されていない場合、コンパイラーは「デフォルトのコンストラクター」を生成します。「デフォルトコンストラクター」は、パラメーターを指定せずに呼び出すことができるコンストラクターです。

  2. 指定されたパラメーターを持つコンストラクターは、クラスの新しいオブジェクトを作成するときにそれらのパラメーターに値が提供されるときに使用されます。クラスでパラメーター付きのコンストラクターが定義されている場合、コンパイラーは「既定のコンストラクター」を生成しないため、既定のコンストラクターを必要とするオブジェクトを作成すると、コンパイル エラーが発生します。したがって、デフォルト コンストラクターとオーバーロード コンストラクターの両方を提供するかどうかは、アプリケーションに基づいて決定する必要があります。

たとえば、CellPhone クラスでは、必要に応じて 2 つ以上のコンストラクターを提供できます。

デフォルトのコンストラクター: クラスのメンバーにある種のデフォルト値を提供しています

public CellPhone(): itsbrand(""), itscolor(""), itsweight(0){ 
      //note that no formal parameters in CellPhone parameter list
}

パラメータを持つコンストラクタ:

public CellPhone(string b, string c, int w): itsbrand(b), itscolor(c), itsweight(w)
{
}

指定されたすべてのパラメーターにデフォルト値を提供するコンストラクターを定義することもできます。これは、デフォルト値があるため、定義上「デフォルト コンストラクター」とも呼ばれます。以下に例を示します。

public CellPhone(string b="", string c="", int w=0): itsbrand(b),itscolor(c),itsweight(w)
{
}

これらは、C++ でのコンストラクターのオーバーロードに関するいくつかの側面です。

于 2013-03-20T03:58:15.687 に答える