如何从基类和派生类中调用函数?

时间:2012-09-03 12:55:52

标签: c++ oop inheritance

我正在编写一段简单的代码。

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. 有没有办法实现这个或者这都是垃圾。

3 个答案:

答案 0 :(得分:4)

func的实现中调用父类的方法B(您需要明确地执行此操作):

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

答案 1 :(得分:1)

您可以明确地致电A::func()

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

答案 2 :(得分:1)

您不能自动安排它;你必须从derived-class override中调用基类函数:

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