c++ - على - شرح return في الجافا




كيفية استدعاء دالة فئة أصل من دالة فئة مشتقة؟ (4)

إذا كانت الطبقة الأساسية الخاصة بك تسمى Base ، وتسمى الدالة الخاصة بك FooBar() يمكنك الاتصال به مباشرة باستخدام Base::FooBar()

void Base::FooBar()
{
   printf("in Base\n");
}

void ChildOfBase::FooBar()
{
  Base::FooBar();
}

كيف يمكنني استدعاء الدالة الأصل من فئة مكتسبة باستخدام C ++؟ على سبيل المثال ، لدي فئة تسمى parent ، ودرجة تسمى child مشتق من الوالد. داخل كل فئة هناك وظيفة print . في تعريف وظيفة طباعة الطفل ، أود إجراء مكالمة إلى وظيفة طباعة الوالدين. كيف لي أن تذهب عن القيام بذلك؟


إعطاء صف الوالدين اسمه Parent والطفل اسمه Child ،

يمكنك فعل شيء كهذا:

void Child::print(int x) {
    Parent::print(x);
}

في MSVC هناك كلمة أساسية خاصة بـ Microsoft لذلك: __super

MSDN: يسمح لك بشكل صريح بذكر أنك تقوم باستدعاء تنفيذ فئة أساسية للدالة التي يتم تجاوزها.

// deriv_super.cpp
// compile with: /c
struct B1 {
   void mf(int) {}
};

struct B2 {
   void mf(short) {}

   void mf(char) {}
};

struct D : B1, B2 {
   void mf(short) {
      __super::mf(1);   // Calls B1::mf(int)
      __super::mf('s');   // Calls B2::mf(char)
   }
};

في حالة حماية معدِّل الوصول الخاص بوظيفة عضو الفئة الأساسية OR عام ، فيمكنك القيام بوظيفة عضو استدعاء للفئة الأساسية من الفئة المشتقة. يمكن إجراء استدعاء إلى الفئة الأساسية غير ظاهرية و ظيفة عضو ظاهري من دالة الأعضاء المشتقة. يرجى الرجوع إلى البرنامج.

#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;
}

انتاج:

$ 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




inheritance