c++重写和重载有什么区别
C++中的重写(override)和重载(overload)是面向对象编程中的两个概念,它们有以下区别:
- オーバーライド(Override):オーバーライドとは、派生クラスにおいて、基底クラスの仮想関数を新しく定義し直すことです。派生クラスの関数は、基底クラスの関数と同じ名前、戻り値の型、引数のリストを持つ必要があり、そうした関数をオーバーライド関数と呼びます。オーバーライド関数は、overrideキーワードを使用して識別します。実行時に、オブジェクトが基底クラスのポインターや参照から仮想関数が呼び出されると、派生クラスのオーバーライドされた関数が呼び出されます。
- 重载(Overload):
重载是指在同一个作用域中,根据函数的参数列表的不同,定义具有相同名称但不同参数的多个函数。重载函数可以有不同的返回类型,但不能仅通过返回类型的差异来重载函数。在编译时,编译器通过参数列表的不同来区分并调用不同的重载函数。
まとめると、オーバーライドとは、多態性を実現するために派生クラスで基底クラスの仮想関数を再定義すること、オーバーロードとは、同じスコープ内に同じ名前だが異なる引数を持つ関数を定義し、異なる関数の動作を提供することです。