21xrx.com
2025-04-02 11:04:13 Wednesday
文章检索 我的文章 写文章
C++派生类对象能否调用父类的虚函数?
2023-07-03 00:58:12 深夜i     20     0
C++ 派生类 对象 调用 父类 虚函数

在C++中,虚函数是一种在父类中声明并可在子类中重新定义的特殊函数。这种函数通常被用于实现多态,允许程序在运行时选择合适的函数版本。但是,如果一个派生类对象想要调用其父类的虚函数,这是否可行呢?

答案是肯定的。C++中的派生类对象可以调用其父类的虚函数,尽管这并不是一个常见的做法。为了调用父类的虚函数,派生类对象可以使用作用域解析运算符(::)来指定要调用的函数,如下所示:

class Parent {
public:
  virtual void foo()
    cout << "Parent::foo" << endl;
  
};
class Child : public Parent {
public:
  void callParentFoo() {
    Parent::foo(); // 调用父类虚函数
  }
};

在这个例子中,Child类继承了Parent类,并且通过callParentFoo()函数调用了父类的虚函数foo()。使用作用域解析运算符,Child类可以明确指定调用Parent类中的函数。

需要注意的是,如果派生类对父类的虚函数进行了重新定义,那么调用该函数时将会调用派生类中的版本而非父类中的版本。如果想要调用父类中的虚函数版本,还需要在派生类中再次重载该函数,并在内部调用父类的函数,如下所示:

class Child : public Parent {
public:
  void foo() override {
    Parent::foo(); // 调用父类的虚函数版本
    cout << "Child::foo" << endl;
  }
};

在这个例子中,Child类重载了foo()函数,并在其中调用了Parent类中的版本。这样,调用Child类的foo()函数时,将会依次调用父类和子类中的版本,输出结果为:

Parent::foo
Child::foo

总之,派生类对象可以调用其父类的虚函数,只需要使用作用域解析运算符即可。但如果重新定义了该函数,就需要在派生类中再次重载该函数并调用父类的版本才能正确实现调用。

  
  

评论区