首页 新闻 会员 周边

参数列表问题C++

0
悬赏园豆:30 [已解决问题] 解决于 2016-12-20 16:21

我想问一下关于默认参数列表的问题假设一个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(),使用参数列表后会调用父类的有参数的构造函数,那么使用参数列表的意义在什么地方,没有什么区别!有哪位大神帮我解答一下!谢谢!

静静流的主页 静静流 | 初学一级 | 园豆:11
提问于:2016-12-16 18:08
< >
分享
最佳答案
0

如果只是无参构造函数person,那person类内的私有成员如果在构造函数中传值等的初始化就无法进行了

收获园豆:15
2012 | 高人七级 |园豆:21230 | 2016-12-16 18:45
其他回答(1)
0

给父类的私有成员变量初始化啊,否则,是没有办法访问父类的私有成员的,就只能通过父类的共有接口来访问



收获园豆:15
niie9 | 园豆:231 (菜鸟二级) | 2016-12-16 19:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册