C 関数のオーバーロードと書き換え: オーバーロード: 同じ名前の関数に異なるパラメーターの型または番号があり、コンパイル時に適切なバージョンが選択されます。書き換え: 基本クラスと同じ名前を持つ派生クラス内の関数は、基本クラスの実装をオーバーライドし、派生クラスに特定の実装を提供します。オーバーロードの特性: コンパイル時にバインドされる、さまざまなパラメーターの型または数値。オーバーライド特性: 同じパラメータのタイプと数、実行時のバインディング、継承が必要です。
#C 関数のオーバーロードと書き換え: 概念と相違点
オーバーロード
int sum(int a, int b); double sum(double a, double b);
オーバーライド
class Base { public: virtual int add(int a, int b); }; class Derived : public Base { public: int add(int a, int b) override; };
違い
オーバーロード | オーバーライド | |
---|---|---|
パブリックまたはプライベート | パブリックまたは保護 | |
#必須ではありません | 必須 | |
パラメータ 異なる型または数値 | 同じパラメータの型と数値 | |
コンパイル時間 | 実行時間 | |
同じクラス内 | 基本クラスと派生クラス |
オーバーロード:
さまざまな型の数値の合計を計算します #include <iostream>
using namespace std;
int sum(int a, int b) {
return a + b;
}
double sum(double a, double b) {
return a + b;
}
int main() {
cout << "整数之和:" << sum(1, 2) << endl;
cout << "浮点数之和:" << sum(1.5, 2.5) << endl;
return 0;
}
多態性を使用してさまざまな形状の面積を計算します 以上がC++ 関数のオーバーロードと書き換えの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。#include <iostream>
using namespace std;
class Shape {
public:
virtual double area() = 0; // 纯虚函数
};
class Rectangle : public Shape {
public:
Rectangle(double length, double width) : length(length), width(width) {}
double area() override {
return length * width;
}
private:
double length;
double width;
};
class Circle : public Shape {
public:
Circle(double radius) : radius(radius) {}
double area() override {
return 3.14 * radius * radius;
}
private:
double radius;
};
int main() {
Shape* shapes[] = {new Rectangle(5, 10), new Circle(4)};
for (int i = 0; i < 2; i++) {
cout << "面积:" << shapes[i]->area() << endl;
}
return 0;
}