C++执行父类的构造方法。这是在原来那篇类的继承的基础上写的。
首先,我们创建一个工程。然后建立我们的父类。
People.h:
<span style="font-size:18px;">#ifndef PEOPLE_H
#define PEOPLE_H
#include<iostream>
using namespace std;
class People{
public:
People();//People的默认构造方法
People(int age, int sex);//构造方法不用返回类型
int get_age();//获取年龄
int get_sex();//获取性别
private:
int age;
int sex;//指定1为男,0为女;
};
#endif // PEOPLE_H
</span>
然后则我们父类中的cpp文件来具体写我们的构造方法:
<span style="font-size:18px;">#include "People.h"
People::People(){
this -> age = 18;
this -> sex = 1;
}
People::People(int age, int sex){
this -> age = age;
this -> sex = sex;
}//构造方法不用返回类型
int People::get_age(){
return this -> age;
}
int People::get_sex(){
return this -> sex;
}
</span>
好,父类已做好准备,我们再来创建一个子类:
<span style="font-size:18px;">#ifndef MAIN_H
#define MAIN_H
#include "People.h"
class Main:public People{
public:
private:
};//继承父类people
#endif // MAIN_H
</span>
这样我们的子类就继承了父类People。
然后,则是我们的主文件:
<span style="font-size:18px;">#include "Main.h"
int main()
{
Main *p = new Main();
cout << p->get_age() << endl;
cout << p->get_sex() << endl;
delete p;
return 0;
}
</span>
现在就可以运行了。。
而结果也就是 18和1;为什么是这个结果呢。。因为,现在我们的子类Main只是继承了People类,
没写自己的构造方法,将数据传个父类。。也就是执行了People类的那个默认的构造函数。
好。现在,我们来写入子类Main的构造方法给父类传入数据;
Main.h:
<span style="font-size:18px;">#ifndef MAIN_H
#define MAIN_H
#include "People.h"
class Main:public People{
public:
Main(int age, int sex);
};//继承父类people
#endif // MAIN_H
</span>
现在子类的构造方法写好了,那我们该怎么样做,来把数据传给父类呢?
<span style="font-size:18px;">#include "Main.h"
Main::Main(int age, int sex):People(age ,sex){
}
</span>
就是利用“:”这个。来将我们子类中的构造方法的数据传回给父类。
好,我们再改改主函数来看看效果:
<span style="font-size:18px;">#include "Main.h"
int main()
{
int a = 16;
int b = 0;
Main *p = new Main(a, b);
cout << p->get_age() << endl;
cout << p->get_sex() << endl;
delete p;
return 0;
}
</span>
此时,我们是输出结果就是16和0了。
PS:每天一小步。