21xrx.com
2024-11-08 23:18:28 Friday
登录
文章检索 我的文章 写文章
C++中的多态性是什么?
2023-07-03 05:07:28 深夜i     --     --
C++ 多态性 定义 实现 继承

C++中的多态性(Polymorphism)是指实现同一个函数名称但具有不同行为的能力。在C++中,多态性是通过不同的方式调用同一个函数来实现的。主要有两种方式实现多态性,即函数的重载和虚函数。

一、函数的重载

函数的重载是指在同一个作用域中,同名函数可以有不同的参数列表,从而使得在调用该函数时,可以根据传入参数的不同来决定调用哪个函数,这样就实现了多态性。

例如:


int sum(int a, int b) {

  return a + b;

}

double sum(double a, double b) {

  return a + b;

}

int main() {

  int x = sum(1, 2);

  double y = sum(1.5, 2.5);

}

在这个例子中,我们定义了两个名为sum的函数,一个接受两个int类型的参数,另一个接受两个double类型的参数。在主函数中,我们分别调用了这两个函数,根据传入参数的类型的不同,编译器会自动选择调用相应的函数,实现了多态性。

二、虚函数

虚函数是C++中实现多态性的另一种方式。虚函数是在基类中定义的一个函数,可以被子类覆盖,使得在调用该函数时,可以根据对象的类型来决定调用哪个函数。

例如:


class Animal {

public:

  virtual void speak()

    cout << "Animal" << endl;

  

};

class Cat : public Animal {

public:

  virtual void speak()

    cout << "Meow" << endl;

  

};

class Dog : public Animal {

public:

  virtual void speak()

    cout << "Woof" << endl;

  

};

int main() {

  Animal* a1 = new Cat();

  Animal* a2 = new Dog();

  a1->speak();

  a2->speak();

}

在这个例子中,我们定义了一个名为Animal的基类,并在其中定义了一个虚函数speak。然后我们定义了两个子类Cat和Dog,分别重写基类中的speak函数。在主函数中,我们创建了一个指向Cat对象和一个指向Dog对象的指针,并分别调用它们的speak函数。由于speak函数是虚函数,编译器会根据对象的类型选择调用相应的函数,实现了多态性。

总结:C++中的多态性可以通过函数的重载和虚函数来实现。使用多态性可以使代码更加灵活,可扩展性强,可以写出更好的代码。

  
  

评论区

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