首页 > 代码库 > C/C++:C++执行父类的构造方法
C/C++:C++执行父类的构造方法
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:每天一小步。
C/C++:C++执行父类的构造方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。