类中继承的构造函数问题

#include<iostream>
using namespace std;
class point
{
private:
    double x, y;
public:
    point(double t, double b)
    {
        x = t;
        y = b;
    }
    void display()
    {
        cout << "(" << x << "," << y << ")" << endl;
    }
};
class circle :public point
{
private:
    double r;
    point p1;
public:
    circle(double t, double b, double z) :point(t, b)
    {
        r = z;
    }
    void display1()
    {
        cout << "圆心位于:"; p1.display(); cout << endl;
        cout << "该圆的半径为:" << r << endl;
    }
};
void main()
{
    circle c1(1, 1, 1);
    c1.display1();
    cout << endl;
}

circle类在运行时显示没有构造函数,请帮忙


定义一个无参数的构造函数,如下:
point(){}
c++编译器的规则是当类中用户没有提供构造函数的时候,编译器会默认提供一个够造函数;只是这个默认的构造函数,没有任何参数;
这里之所以提示:没有合适的默认构造函数是因为你的circle类中组合了point类,即circle类中的一个成员是point类,所以编译器在初始化你的c1
对象的时候,会先去调用基类point的构造函数,接着执行自身的double r的构造函数,接着在去执行 point p1;对象的构造函数,但此时基类point中
没有提供无参数的构造函数,所以会报错,因此只要提供了上面写的无参数构造函数,就可以成功运行了;

用double类型。要类型跟参数一致。circle c1(1.0, 1.0, 1.0);

望楼主采纳!^ - ^ ^ - ^ -^