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; } |