2012-09-03 59 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:这很不幸,因为你将不得不改变一些东西。 –

相关问题