Jamesyoung36 2017-05-19 03:34 采纳率: 21.1%
浏览 877
已采纳

类中继承的构造函数问题

#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类在运行时显示没有构造函数,请帮忙

  • 写回答

3条回答 默认 最新

  • 内核之道 PostgreSQL领域优质创作者 2017-05-19 04:26
    关注
    
    定义一个无参数的构造函数,如下:
    point(){}
    c++编译器的规则是当类中用户没有提供构造函数的时候,编译器会默认提供一个够造函数;只是这个默认的构造函数,没有任何参数;
    这里之所以提示:没有合适的默认构造函数是因为你的circle类中组合了point类,即circle类中的一个成员是point类,所以编译器在初始化你的c1
    对象的时候,会先去调用基类point的构造函数,接着执行自身的double r的构造函数,接着在去执行 point p1;对象的构造函数,但此时基类point中
    没有提供无参数的构造函数,所以会报错,因此只要提供了上面写的无参数构造函数,就可以成功运行了;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作