21xrx.com
2024-12-22 22:17:15 Sunday
登录
文章检索 我的文章 写文章
C++多态的实现
2023-06-29 08:52:13 深夜i     --     --
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分别输出了不同的类型。这种方式也实现了多态。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复