next up previous contents
Next: D.10.2 コピー・コンストラクター Up: D.10 クラス定義についての注意 Previous: D.10 クラス定義についての注意

D.10.1 デフォールト・コンストラクター

default-constructor1.C

class Complex {
private:
  double re, im;
public:
  Complex(double r, double i): re(r), im(i) { }
};

int main()
{
  Complex a(1.0, 2.0);
  Complex I(0, 1);
}

default-constructor2-error.C -- コンパイルできない!

class Complex {
private:
  double re, im;
public:
  Complex(double r, double i): re(r), im(i) { }
};

int main()
{
  Complex a;
}

Complex a; とすると引数のないコンストラクターを呼び出すことになる。 それが定義できていないのでエラーになるわけである。 例えば次のように修正しなければならない。

default-constructor2.C

class Complex {
private:
  double re, im;
public:
  Complex(double r, double i): re(r), im(i) { }
  Complex(): re(0.0), im(0.0) { }
};

int main()
{
  Complex a;
}


next up previous contents
Next: D.10.2 コピー・コンストラクター Up: D.10 クラス定義についての注意 Previous: D.10 クラス定義についての注意
Masashi Katsurada
平成18年4月28日