21xrx.com
2024-11-05 14:48:10 Tuesday
登录
文章检索 我的文章 写文章
C++函数重载和重写的区别是什么?
2023-07-04 22:40:48 深夜i     --     --
C++ 函数 重载 重写 区别

C++是一门强大的面向对象编程语言,支持函数重载和函数重写两种技术。这两种技术很常见,但很多人可能不太清楚它们之间的区别是什么。

函数重载指在同一个作用域中使用相同的函数名但参数列表不同的多个函数。在使用重载函数时,编译器会根据实参的个数、顺序和类型推断出调用哪个函数。例如,下面的代码中就有两个名字相同但参数列表不同的函数:


void foo(int i);

void foo(char c);

这样当我们调用 `foo` 函数的时候,编译器会自动选择正确的版本。

函数重写,也称为虚函数重写在继承层次结构中使用,它允许派生类重新定义其基类中的虚函数。当尝试通过基类指针或引用调用虚函数时,程序会根据运行时对象的实际类型来选择调用函数的版本。例如:


class Base {

public:

  virtual void foo();

};

class Derived : public Base {

public:

  void foo() override;

};

在这种情况下,派生类 `Derived` 重写了基类 `Base` 中的虚函数 `foo`。当我们这样调用时:


Base* ptr = new Derived();

ptr->foo();

实际上会调用 `Derived` 类中重写的 `foo` 函数,而不是 `Base` 类中的函数。

在总结一下,函数重载和函数重写在 C++ 中都是非常重要的概念,但它们之间有很大的区别。函数重载通过参数的类型、个数、顺序等来区别同名函数;函数重写是在继承层次结构中使用的,允许派生类重新定义基类中的虚函数,通过运行时动态绑定来选择调用正确的版本。了解这些概念对于编写高质量的 C++ 代码至关重要。

  
  

评论区

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