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.cpp:

<span style="font-size:18px;">
#include "People.h"

void People::say_hello(){
    cout << "People: hello world !" << endl;
}
</span>

再来就是我们的子类:

Main.h:

<span style="font-size:18px;">#ifndef MAIN_H
#define MAIN_H

#include "People.h"

class Main:public People{
    public:
        void say_hello();

};

#endif // MAIN_H</span>

Main.cpp:

<span style="font-size:18px;">
#include "Main.h"

void Main::say_hello(){
    cout << "Main: hello world !" << endl;
}
</span>

好,准备工作做好了,我们现在来写好我们的主程序:

<span style="font-size:18px;">#include "Main.h"

int main()
{
    Main *p = new Main();
    p -> say_hello();
    return 0;
}
</span>

此时,主程序输出的是Main:hello world !;

而我们想要输出父类中的People:hello world !要怎样做呢。

我们只需要改改子类的Main.cpp:

<span style="font-size:18px;">
#include "Main.h"

void Main::say_hello(){
    People::say_hello();
}</span>

此时,我们输出的就是People:hello world !;我们就用这个方法来实行父类的方法。

而我们要两个都输出呢?仍然只要改改就行;

<span style="font-size:18px;">
#include "Main.h"

void Main::say_hello(){
    People::say_hello();
    cout << "Main: hello world !" << endl;
}

</span>

此时,在运行输出时,就是输出两个hello world 了。

其实,我们即使,不在子类中写,也是能输出父类的hello world的。

我们只需要在主程序中这么写就行了。

<span style="font-size:18px;">
#include "Main.h"

int main()
{
    Main *p = new Main();
    p -> People::say_hello();
    delete p;
    return 0;
}
</span>

这也是C++的强力和方便之处。让人感觉很爽。

PS:天行健,君子以自强不息。

时间: 2024-10-27 16:55:15

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

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

子类继承父类,方法的执行顺序

public class HelloA { static { System.out.println("static A"); } { System.out.println("I'm A class"); } public HelloA() { System.out.println("HelloA"); } } class HelloB extends HelloA { static { System.out.println("stati

继承实现的原理、子类中调用父类的方法、封装

一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--->A--->E--->B--->C. class E: def test(self): print('from E') class A(E): def test(self): print('from A') class B: def test(self): print('from B'

8.python之面相对象part.5(子类调用父类的方法,以及super关键字)

python中子类要调用父类的某个方法,在python早期版本中是这样实现的: class A: def __init__(self): print "enter A" print "leave A" class B(A): def __init__(self): print "enter B" A.__init__(self) print "leave B" b = B() >>>enter B enter

反射工具类(调用父类的方法和字段)

使用这个工具类,可以完成父类,基类,方法,字段,无论什么权限都可以调用. package com.reflect; /** * 基类 * @author jianghui */ public class GrandParent { public String publicField = "1"; String defaultField = "2"; protected String protectedField = "3"; private St

解决重写父类的方法且不会影响继承的子类的问题

基类的方法被所有继承的子类继承,是不应该被修改的,如果继承的子类重写了基类的方法,那么,再从这个子类派生出子类的话,这个派生的子类接口已经破坏掉了统一的接口. 但有时候,我们需要一个子类能扩展基类的方法,但又不想破坏这个统一的接口,这时候,哥就来教你既能扩展功能,又能保证接口的统一性:) 首先做几个实验验证: 提供的源码如下: A类  B类  C类  (B类继承于A类,C类继承于B类) // // A.h // Super // // Copyright (c) 2014年 Y.X. All r

Day17:继承实现的原理、子类中调用父类的方法、封装

一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--->A--->E--->B--->C. class E: def test(self): print('from E') class A(E): def test(self): print('from A') class B: def test(self): print('from B'

子类执行父类的构造方法

子类有时需要执行父类的构造方法 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__

重写父类的方法且不会影响继承的子类---【解决此问题】

基类的方法被所有继承的子类继承,是不应该被修改的,如果继承的子类重写了基类的方法,那么,再从这个子类派生出子类的话,这个派生的子类接口已经破坏掉了统一的接口. 但有时候,我们需要一个子类能扩展基类的方法,但又不想破坏这个统一的接口,这时候,哥就来教你既能扩展功能,又能保证接口的统一性:) 首先做几个实验验证: 提供的源码如下: LAObject类  LBObject类  LCobjet类  (LBObject类继承于LAObject类,LCobjet类继承于LBObject类) // LAObj