ポリモーフィズムでは、関数の戻り値の型は、派生クラスが基本クラスのメソッドをオーバーライドするときに返される特定のオブジェクトの型を指定します。派生クラス メソッドの戻り値の型は、基本クラスと同じにすることも、より具体的な型にすることもできるため、より多くの派生型を返すことができるため、柔軟性が向上します。
#ポリモーフィズムにおける C 関数の戻り値の型の役割
はじめにポリモーフィズムはオブジェクト指向プログラミングにおける重要な機能であり、親クラスの参照がそのサブクラスのオブジェクトを指すことができるようになります。ポリモーフィズムでは、関数の戻り値の型が重要な役割を果たし、派生クラスが基本クラスのメソッドをオーバーライドするときに返される特定のオブジェクトの型を決定します。
ポリモーフィズムと戻り値の型派生クラスが基本クラスを継承する場合、派生クラスは基本クラスのメソッドをオーバーライドできます。基本クラス メソッドに戻り値がある場合、派生クラス メソッドは基本クラス メソッドと同じか、より具体的な戻り値の型を持たなければなりません。
class Shape { public: virtual Shape* clone() = 0; }; class Circle : public Shape { public: virtual Circle* clone() override; };
基本クラスは、 形状
オブジェクト。派生クラス Circle
は clone
メソッドをオーバーライドし、より具体的な Circle
オブジェクトを返します。 実際的なケース
以下は、ポリモーフィズムにおける C 関数の戻り値の型の役割を示す実際的なケースです: 基本クラスは、動物の鳴き声を表す文字列を返す メソッドを定義します。派生クラス メソッドを呼び出し、正しいスクリーム出力を取得できます。 以上がポリモーフィズムにおける C++ 関数の戻り値の型の役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。#include <iostream>
class Animal {
public:
virtual std::string speak() = 0;
};
class Dog : public Animal {
public:
std::string speak() override {
return "Woof!";
}
};
class Cat : public Animal {
public:
std::string speak() override {
return "Meow!";
}
};
int main() {
Animal* animal = new Dog;
std::cout << animal->speak() << std::endl; // 输出: Woof!
animal = new Cat;
std::cout << animal->speak() << std::endl; // 输出: Meow!
return 0;
}
Dog
および Cat
は speak
メソッドをオーバーライドし、特定の鳴き声文字列を返します。 main 関数は、
Animal
ポインターを作成し、上記の派生クラス オブジェクトを指します。ポリモーフィックな性質により、プログラムは派生クラスの