这里要怎么满足构造函数初始化和缺省初始化

问题遇到的现象和发生背景

定义一个学生类,包含基本学生的基本信息属性,学号、姓名、年龄性别。
构造函数实现初始化。缺省初始化学号:-1、姓名:"None"、年龄:0,性别:'M'。

遇到的现象和发生背景,请写出第一个错误信息

想问一下构造函数初始化和缺省初始化能同时在一个类中出现吗?

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 
#include<string>
#include        
using namespace std;
class Student{
         public:
        int id;
        string name;
        int age;
        char sex;
Student(int m_id,string m_name,int m_age,char m_sex):id(m_id),
         name(m_name),
         age(m_age),
         sex(m_sex){
         }
    Student(int m_id=-1,string m_name="None",int m_age=0,char m_sex='M'){
        
        }
                            
};

运行结果及详细报错内容

报错就是说

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

你这样就行了,上面你写了两个一模一样的构造函数,所以报错了

Student(int m_id=-1,string m_name="None",int m_age=0,char m_sex='M'):id(m_id),name(m_name),age(m_age),sex(m_sex){
} 

你这两个构造函数时重叠的,编译器不知道你想用哪个啊。比如Student(1,"zhangs",19,F)的话。你保留一个就可以了啊

    Student(int m_id=-1,string m_name="None",int m_age=0,char m_sex='M'):id(m_id),
         name(m_name),
         age(m_age),
         sex(m_sex){   
        }


详细解答如下,望采纳,有问题可以再沟通


可以通过在类中定义多个构造函数来实现构造函数初始化和缺省初始化。


在上面的代码中,你已经定义了一个构造函数,它接收四个参数,并使用它们初始化类的成员变量。这就是构造函数初始化。


缺省初始化是在没有给出初始值时使用默认值进行初始化。在你的代码中,你可以通过定义一个具有缺省值的构造函数来实现缺省初始化。

例如:

class Student {
    public:
        int id;
    string name;
    int age;
    char sex;
    // 构造函数初始化
    Student(int m_id, string m_name, int m_age, char m_sex) : id(m_id),
                                                                  name(m_name),
                                                                  age(m_age),
                                                                  sex(m_sex) {
    }
    // 缺省初始化
    Student(int m_id=-1, string m_name="None", int m_age=0, char m_sex='M') : id(m_id),
                                                                                  name(m_name),
                                                                                  age(m_age),
                                                                                  sex(m_sex) {
    }
}
;