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

4

3 回答 3

4

在以下实现中调用func父类的方法(您需要显式执行此操作)B

class B: public A
{
    public:
    func()
    {
        A::func();
        ...
    }
}
于 2012-09-03T12:58:53.783 回答
1

您可以A::func()显式调用。

class B : public A
 {
  public:
   void func ()
    {
      A::func(); // call base class func()
      // some more code 
    }
 }
于 2012-09-03T12:58:45.637 回答
1

你不能安排它自动发生;您必须从派生类覆盖中调用基类函数:

void B::func() {
    A::func(); 
    // then do something else
}
于 2012-09-03T12:59:41.087 回答