関数のオーバーロードでは、同じスコープ内で同じ名前の関数を定義できますが、異なるパラメーター リストが必要です。関数の書き換えでは、派生クラスの基本クラスと同じ名前と同じパラメーター リストを持つ関数を定義できます。 override キーワード、return 型とパラメータのリストは基本クラス関数と同じです。オーバーロードの例: print(int)、print(double); 上書きの例: 派生クラスの foo() は、Base クラスの foo() をオーバーライドします。
#関数のオーバーロードと書き換えに関する C 言語の標準仕様
#関数のオーバーロード
オーバーロードを使用すると、複数の関数を同じスコープ内で同じ名前で定義できますが、それらのパラメーター リストは異なる必要があります。 C 言語標準では、関数のオーバーロードが次の仕様に従う必要があります。例:
void print(int x); void print(double x);
関数のオーバーライド
オーバーライドを使用すると、派生クラスで関数を定義できます。クラス内の同じ名前とパラメータリストを持つ基本 A 関数と同じです。 C 言語標準では、次の仕様に従うように関数を書き換える必要があります。class Base {
public:
virtual void foo();
};
class Derived : public Base {
public:
override void foo() override; // 重写基类中的 foo
};
関数のオーバーロード:
#include <iostream>
using namespace std;
void print(int x) {
cout << "int: " << x << endl;
}
void print(double x) {
cout << "double: " << x << endl;
}
int main() {
print(10); // 调用 int 版本的 print
print(3.14); // 调用 double 版本的 print
return 0;
}
#include <iostream>
using namespace std;
class Shape {
public:
virtual void draw() = 0; // 纯虚函数
};
class Rectangle : public Shape {
public:
void draw() override {
cout << "Drawing a rectangle" << endl;
}
};
int main() {
Rectangle r;
r.draw(); // 调用 Rectangle 类中的重写函数
return 0;
}
以上が関数のオーバーロードと書き換えに関する C++ 言語の標準仕様の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。