-
シンプルな継承の例:
class Animal { public: void eat() { cout << "Animal is eating..." << endl; } }; class Dog : public Animal { public: void bark() { cout << "Dog is barking..." << endl; } }; int main() { Dog dog; dog.eat(); // Animalのメンバ関数を呼び出せる dog.bark(); return 0; }
この例では、
Animal
クラスをベースクラスとして、Dog
クラスを派生クラスとして定義しています。Dog
クラスはAnimal
クラスのメンバ関数であるeat()
を継承しており、新たにbark()
メンバ関数を追加しています。 -
仮想関数とポリモーフィズムの例:
class Shape { public: virtual void draw() { cout << "Drawing a shape..." << endl; } }; class Circle : public Shape { public: void draw() { cout << "Drawing a circle..." << endl; } }; class Square : public Shape { public: void draw() { cout << "Drawing a square..." << endl; } }; int main() { Shape* shape; Circle circle; Square square; shape = &circle; shape->draw(); // Circleクラスのdraw()が呼び出される shape = □ shape->draw(); // Squareクラスのdraw()が呼び出される return 0; }
この例では、
Shape
クラスをベースクラスとして、Circle
クラスとSquare
クラスを派生クラスとして定義しています。Shape
クラスのdraw()
関数を仮想関数として宣言し、派生クラスでオーバーライドしています。そして、ポインタを使って異なる派生クラスのオブジェクトを指し示し、仮想関数を呼び出すことでポリモーフィズムを実現しています。
これらの例は、C++の継承の基本的な概念を示しています。継承を使用することで、コードの再利用性や保守性を向上させることができます。さらに、ポリモーフィズムを活用することで、異なる派生クラスのオブジェクトを統一的に扱うことができます。