我想问一下关于默认参数列表的问题假设一个person类他的一个有参数构造如下person::person(string name,string sex, int age)
{
p_name = name;
p_sex = sex;
p_age = age;
cout<<p_name<<","<<p_sex<<","<<p_age<<endl;
cout<<"person(string name,string sex, int age)"<<endl;
}
子类student继承person他的有一个有参数构造如下
student::student(string name, string sex,int age,int code):person(name,sex,age)
{
p_name = name;
p_sex =sex;
p_age = age;
stu_code = code;
cout<<"student(string name, string sex,int age,int code)"<<endl;
}
student继承person,在创建一个对象代码如下
student *p = new student("yinian","nv",144,123466);
cout<<p->getName()<<" , "<<p->getSex()<<" , "<<p->getAge()<<" , "<<p->getCode()<<endl;
delete p;
p = NULL;
得到的结果如下:
yinian,nv,144
person(string name,string sex, int age)
student(string name, string sex,int age,int code)
yinian , nv , 144 , 123466
~person()
Press any key to continue . . .
可以看到在子类构造后面使用默认参数列表后,person类在子类创建对象后他的属性也被赋予了子类在创建对象的时候的值,我想问一下,如果不用参数列表子类创建对象是调用父类的无参构造函数person(),使用参数列表后会调用父类的有参数的构造函数,那么使用参数列表的意义在什么地方,没有什么区别!有哪位大神帮我解答一下!谢谢!
如果只是无参构造函数person,那person类内的私有成员如果在构造函数中传值等的初始化就无法进行了
给父类的私有成员变量初始化啊,否则,是没有办法访问父类的私有成员的,就只能通过父类的共有接口来访问