21xrx.com
2024-06-03 03:35:40 Monday
登录
文章检索 我的文章 写文章
C++多态实现方法详解
2023-07-04 19:41:05 深夜i     --     --
C++ 多态 实现方法 继承 虚函数

多态是C++这门编程语言中的一个特性,即同一函数在不同的上下文中能够表现出不同的行为。使用多态可以让代码更加灵活和可维护,同时也提高了代码的重用性和可读性。

实现多态的方法主要有两种:虚函数和模板函数。虚函数是指在基类中声明的虚函数,派生类可以通过重写该函数实现自己的行为。而模板函数是指在编译阶段根据不同的类型生成不同的代码,从而实现不同的行为。

在使用虚函数进行多态的实现时,需要注意以下几点:

1.在基类中将需要实现多态的函数声明为虚函数。

2.在派生类中重写该函数,并使用“override”关键字标记。

3.使用基类的指针或引用调用该函数时,实际调用的是派生类中的重写函数。

例如:


class Shape {

public:

  virtual void draw() // 声明虚函数 draw

    std::cout << "I am a shape." << std::endl;

  

};

class Circle : public Shape {

public:

  void draw() override // 在派生类中重写虚函数 draw

    std::cout << "I am a circle." << std::endl;

  

};

int main() {

  Shape* shapePtr = new Circle();

  shapePtr->draw(); // 实际调用的是 Circle 中的 draw 函数

  return 0;

}

当调用`shapePtr->draw()`时,实际调用了 Circle 中的 draw 函数,输出的是“I am a circle.”。

模板函数的实现相对较简单,只需要在函数定义时使用模板参数即可。例如:


template<typename T>

void Swap(T& a, T& b) // 定义模板函数 Swap

  T temp = a;

  a = b;

  b = temp;

int main() {

  int x = 1, y = 2;

  Swap(x, y); // 调用 Swap<int>

  std::cout << x << " " << y << std::endl; // 输出: 2 1

  double a = 1.0, b = 2.0;

  Swap(a, b); // 调用 Swap<double>

  std::cout << a << " " << b << std::endl; // 输出: 2.0 1.0

  return 0;

}

在调用`Swap(x, y)`时,实际调用的是`Swap `,将 x 和 y 的值交换了。在调用`Swap(a, b)`时,实际调用的是`Swap `,将 a 和 b 的值交换了。

总的来说,C++的多态实现方法可以让代码更加灵活和可维护,对于大型项目的开发非常有帮助。开发者可以根据实际需求选择虚函数或模板函数来实现多态的效果。

  
  

评论区

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