770 Stimmen

Wie ruft man eine Funktion der übergeordneten Klasse von einer Funktion der abgeleiteten Klasse auf?

Wie rufe ich die übergeordnete Funktion aus einer abgeleiteten Klasse mit C++ auf? Ich habe zum Beispiel eine Klasse namens parent und eine Klasse namens child die von der Mutter abgeleitet ist. Innerhalb von jeder Klasse gibt es eine print Funktion. In der Definition der Druckfunktion des Kindes möchte ich einen Aufruf an die Druckfunktion der Eltern vornehmen. Wie würde ich dies tun?

10voto

Ajay yadav Punkte 3517

Wenn der Zugriffsmodifikator der Mitgliedsfunktion der Basisklasse geschützt ODER öffentlich ist, können Sie die Mitgliedsfunktion der Basisklasse von der abgeleiteten Klasse aus aufrufen. Der Aufruf der nicht-virtuellen und virtuellen Mitgliedsfunktion der Basisklasse kann von der abgeleiteten Mitgliedsfunktion aus erfolgen. Bitte beachten Sie das Programm.

#include<iostream>
using namespace std;

class Parent
{
  protected:
    virtual void fun(int i)
    {
      cout<<"Parent::fun functionality write here"<<endl;
    }
    void fun1(int i)
    {
      cout<<"Parent::fun1 functionality write here"<<endl;
    }
    void fun2()
    {

      cout<<"Parent::fun3 functionality write here"<<endl;
    }

};

class Child:public Parent
{
  public:
    virtual void fun(int i)
    {
      cout<<"Child::fun partial functionality write here"<<endl;
      Parent::fun(++i);
      Parent::fun2();
    }
    void fun1(int i)
    {
      cout<<"Child::fun1 partial functionality write here"<<endl;
      Parent::fun1(++i);
    }

};
int main()
{
   Child d1;
   d1.fun(1);
   d1.fun1(2);
   return 0;
}

Ausgabe:

$ g++ base_function_call_from_derived.cpp
$ ./a.out 
Child::fun partial functionality write here
Parent::fun functionality write here
Parent::fun3 functionality write here
Child::fun1 partial functionality write here
Parent::fun1 functionality write here

-19voto

superbem Punkte 419
struct a{
 int x;

 struct son{
  a* _parent;
  void test(){
   _parent->x=1; //success
  }
 }_son;

 }_a;

int main(){
 _a._son._parent=&_a;
 _a._son.test();
}

Referenzbeispiel.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X