定义一个学生类,包含基本学生的基本信息属性,学号、姓名、年龄性别。
构造函数实现初始化。缺省初始化学号:-1、姓名:"None"、年龄:0,性别:'M'。
想问一下构造函数初始化和缺省初始化能同时在一个类中出现吗?
#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'){
}
};
报错就是说
你这样就行了,上面你写了两个一模一样的构造函数,所以报错了
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) {
}
}
;