2012-09-03 58 views
0

我在寫一段簡單的代碼。如何從基類和派生類都調用函數?

class A 
{ 
    public: 
    virtual func() 
    { // allocate memory 
    } 
}; 

class B : public A 
{ 
    public: 
    func() 
    { // some piece of code 
     // but call base class same function Ist 
    } 
} 

main() 
    { 
     A *ptr = new B; 
     ptr->func() //here I want to call base class function first 
        //and then derived class function 
        // How to implement ?? 
    } 
  1. 如何首先調用基類函數然後調用從派生的類??相同的功能。 我不想明確地調用每個函數,我只是調用派生類函數,並且應該自動調用基類函數。

  2. 我不想要任何構造函數來調用這些函數。

  3. 有沒有什麼辦法來實現這個或這是全部垃圾。

+1

我修復了一些語法錯誤。請記住使用*工作*代碼的問題,否則在問題中的錯誤可能會隱藏你想問的問題。 –

回答

4

調用父類的方法func(你需要明確地做到這一點)在B實現:

class B: public A 
{ 
    public: 
    func() 
    { 
     A::func(); 
     ... 
    } 
} 
+0

我不想改變任何功能 –

+1

你可以嘗試祈禱,但我懷疑它有幫助。你必須改變B的實現來調用A才能工作。 –

1

您可以直接致電A::func()

class B : public A 
{ 
    public: 
    void func() 
    { 
     A::func(); // call base class func() 
     // some more code 
    } 
} 
+0

我不想改變任何功能 –

1

你不能安排其自動發生;您必須從派生級覆蓋調用基類函數:

void B::func() { 
    A::func(); 
    // then do something else 
} 
+0

我不想改變任何功能 –

+2

@ user1160090:這很不幸,因爲你將不得不改變一些東西。 –

相關問題