宇宙大队长 2020-03-30 07:51 采纳率: 0%
浏览 692

类student不存在默认构造函数求大神告知哪里错了已经看了无数遍了也找不到错误该怎么修改

#include
#include
using namespace std;
class phone
{
public:
phone()
{}
phone(string name)
{
p_name = name;
cout << "phone有参构造" << endl;
}
~phone()
{
cout << "phone的析构函数" << endl;
}
string p_name;
};
class student
{
public:
student(string m_name, int m_score, int m_high, string p_name):name(m_name),score(m_score),high(new int(m_high)),pname(m_name){}
~student()
{
cout << "student的析构函数" << endl;
}
void pnames()
{
cout << name << "拿着" << pname.p_name << "手机" << endl;
}
public:
string name;
int score;
int* high;
phone pname;
};

int main()
{
student s;

}

  • 写回答

3条回答 默认 最新

  • BugM 2020-03-30 13:42
    关注

    默认构造函数即为无参构造函数,当你为自定义的类添加了其他带参数的构造函数时,编译器不再自动的为你添加默认构造函数,再这种情况下,如果你需要使用默认构造函数来构造对象,就必须手动填上无参的构造函数。
    你的student类只有带参数的构造函数,而main函数中student s;调用的是无参构造函数,所以编译器会报错提示没有相应的默认构造函数。

    相反地,如果你没有给编译器提供任何构造函数,编译器会默认提供简单的无参的默认构造函数(编译器自动提供的默认构造函数的函数体是空的,不做任何事情)

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog