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:每天一小步。

时间: 2024-08-03 01:43:29

C/C++:C++执行父类的构造方法的相关文章

子类执行父类的构造方法

子类有时需要执行父类的构造方法 class annimal(object): def __init__(self): print('bar') self.type = '动物' class shengwu(object): def __init__(self): print('sengwu') self.tc = '生物' class cat(annimal,shengwu): def __init__(self): self.n = 'mao' super(cat,self).__init__

Java中不要在父类的构造方法中调用会被子类重写的方法

在Java中,不要在父类的构造函数中调用会被子类重写的方法,否则运行时会遇到意想不到的错误.看一个例子就会明白: import java.util.*; class Animal { public Animal() { eat(); } protected void eat() { System.out.println("Eat something"); } } public class Bird extends Animal { public Bird() { } @Override

子类继承和调用父类的构造方法

1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法,. 2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法. 3. 如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句. 4. 如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条. 说白了:原则就是,先调用父亲的.(没有就默认调,有了就按有

子类继承和调用父类的构造方法 (转)

子类继承和调用父类的构造方法1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,.2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法.3.如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句.4.如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条.说白了:原则就是,先调用父亲的.(没有就默认调

子类能不能继承父类的构造方法?

class A{ public A(){} // 1:无参数构造方法. public A(String s){} // 2.} class B extends A{ public B(String s){ super(s); // 3. }} 说明:如果没有1处的无参数构造方法,那么3处一定要主动调用父类带参数的构造方法.如果有1处的构造方法,那么3处代码可以不要,因为Java会自动默认调用父类的无参数构造方法. 记住一点:在构造子类时,一定会调用到父类的构造方法.所以父类要么有一个默认的无参数

python - 执行父类中的方法

执行父类中的方法: class C1: def f1(self): print('c1.f1') return 123 class C2(C1): def f1(self): #主动执行父类的f1方法 ret = super(C2,self).f1() print('c2.f1') return ret obj = C2() obj.f1() out: c1.f1c2.f1

java constructor 在构造子类时,一定会调用到父类的构造方法 “ 私有属性被继承了?”问题

” Error:Implicit super constructor Pet() is undefined. Must explicitly invoke another constructor “ 记住一点:在构造子类时,一定会调用到父类的构造方法.因为父类中的元素也需要被初始化. 所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造.如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造.  参考代码如下; package pra

父类 子类 构造方法

摘录 子类不能继承父类的显式定义的构造方法,若想要继承父类的构造方法,需要通过覆盖该构造方法,并在方法中通过super调用父类的该构造方法的方式来继承. 三种情况说明: 1.父类中没有显式定义任何构造方法,此时父类中实际有一个默认的无参数构造方法.这时,在子类中显式定义任何构造方法时,可以不用使用super调用父类的默认方法. 2.父类中显式定义了默认的无参数构造方法,那么子类可以定义任意的构造方法,而不必使用super调用父类的构造方法 3.父类中显示定义了构造方法,却没有显示定义默认的无参数

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: void say_hello(); }; #endif // PEOPLE_H </span> People.c