当前位置:首页 C++ > 正文

c++多态的实现方式

作者:野牛程序员:2023-05-31 19:54:40 C++阅读 3142

在C++中,多态可以通过虚函数和继承来实现。以下是实现多态的几种常见方式:

  1. 虚函数(Virtual Functions): 在基类中将函数声明为虚函数,派生类可以覆盖(重写)这些虚函数,从而实现多态。当通过基类指针或引用调用虚函数时,实际执行的是派生类中的函数。

class Base {
public:
  virtual void foo() {
    // 基类虚函数的实现
  }
};

class Derived : public Base {
public:
  void foo() override {
    // 派生类中对虚函数的实现
  }
};

int main() {
  Base* ptr = new Derived();  // 使用基类指针指向派生类对象
  ptr->foo();  // 调用虚函数,实际执行派生类中的实现
  delete ptr;
  return 0;
}

2、纯虚函数(Pure Virtual Functions)和抽象类(Abstract Classes): 基类中声明纯虚函数,没有实际实现,而是要求派生类必须实现这些函数。基类的对象不能被实例化,只能作为基类指针或引用使用。通过派生类的实现,可以实现多态。

class Base {
public:
  virtual void foo() = 0;  // 纯虚函数声明,没有实现
};

class Derived : public Base {
public:
  void foo() override {
    // 派生类中对纯虚函数的实现
  }
};

int main() {
  Base* ptr = new Derived();  // 使用基类指针指向派生类对象
  ptr->foo();  // 调用纯虚函数,实际执行派生类中的实现
  delete ptr;
  return 0;
}

3、虚函数表(Virtual Function Table): C++编译器通过为每个类生成虚函数表(也称为vtable),其中包含类的虚函数的地址。当通过指针或引用调用虚函数时,实际上是根据虚函数表查找并调用正确的函数。

class Base {
public:
  virtual void foo() {
    // 基类虚函数的实现
  }
};

class Derived : public Base {
public:
  void foo() override {
    // 派生类中对虚函数的实现
  }
};

int main() {
  Base* ptr = new Derived();  // 使用基类指针指向派生类对象
  ptr->foo();  // 调用虚函数,实际执行派生类中的实现
  delete ptr;
  return 0;
}

通过使用虚函数和继承,C++中的多态性可以实现运行时的动态绑定,使得在使用基类指针或引用时,可以根据对象的实际类型来调用适当的函数实现。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击