21xrx.com
2025-04-03 23:10:09 Thursday
文章检索 我的文章 写文章
C++多态的实现
2023-06-29 08:52:13 深夜i     15     0
C++ 多态 实现

C++中的多态(polymorphism)是指在继承关系中,子类可以覆盖父类的方法,从而实现不同的行为。C++中实现多态的方式有两种:虚函数和模板。

1. 使用虚函数实现多态

C++中定义虚函数的方法是在函数的声明前加上virtual关键字,如下所示:

class Animal {
public:
  virtual void speak()
    cout << "I am an animal." << endl;
  
};
class Cat : public Animal {
public:
  void speak()
    cout << "I am a cat." << endl;
  
};
class Dog : public Animal {
public:
  void speak()
    cout << "I am a dog." << endl;
  
};

通过上述代码,Animal类被定义为一个基类,Cat和Dog继承自Animal类,重写了基类中的speak()函数,分别输出了“我是一只猫”和“我是一只狗”。

实现多态时,需要将基类函数声明为虚函数。当一个对象被定义为基类指针或引用时,对该对象调用虚函数时,编译器会根据该对象的实际类型,动态地确定要调用的函数。

例如:

Animal* a;
Cat cat;
Dog dog;
a = &cat;
a->speak(); //输出“我是一只猫”
a = &dog;
a->speak(); //输出“我是一只狗”

2. 使用模板实现多态

使用模板也可以实现多态。模板是C++中的一个重要特性,它可以让编译器在编译时自动生成不同类型的代码。通过模板可以实现对不同类型的参数进行相同的处理。

例如:

template <typename T>
void output(T a)
  cout << a << endl;
int main() {
  int i = 1;
  double d = 2.0;
  string s = "hello";
  output(i); //输出1
  output(d); //输出2.0
  output(s); //输出hello
  return 0;
}

上述代码中用模板函数output分别输出了不同的类型。这种方式也实现了多态。

  
  

评论区

请求出错了