C++의 상속 및 다형성 구현 메커니즘: 상속: 상속 지정자를 통해 구현되며 파생 클래스는 기본 클래스 동작을 상속하고 확장합니다. 다형성: 가상 함수 테이블을 통해 구현되며 기본 클래스 포인터는 파생 클래스 메서드를 동적으로 호출합니다. 구현 예: 상속 및 다형성을 통해 모양 클래스의 계층 구조를 만들고 모든 모양의 전체 영역을 계산하는 함수를 작성할 수 있습니다.
C++의 상속 및 다형성 구현 메커니즘
상속 및 다형성은 C++에서 코드 재사용 및 동적 바인딩을 달성하는 데 중요한 기능입니다. 그러나 효율적이고 강력한 코드를 작성하려면 기본 구현을 이해하는 것이 중요합니다.
구현 메커니즘
1. 상속
상속은 기존 클래스(기본 클래스)의 동작을 상속하고 확장하는 새로운 클래스(파생 클래스)를 만드는 방법입니다. C++에서 상속은 public
, protected
또는 private
상속 지정자를 통해 구현됩니다. public
、protected
或 private
继承说明符实现。
例如:
class Animal { public: virtual void speak() { cout << "Animal sound" << endl; } }; class Dog : public Animal { public: void speak() override { cout << "Woof!" << endl; } };
在这个示例中,Dog
类继承了 Animal
基类的 speak()
方法,并覆盖了该方法以提供特定的行为。
2. 多态性
多态性是指在运行时根据对象的实际类型动态调用方法的能力。它使基类指针能够访问派生类对象中的方法。
C++ 中的多态性是通过虚函数表实现的。在编译期间,为每个虚函数生成一个虚函数表条目。当基类指针调用虚函数时,它将查找对象的虚函数表,然后调用相应的方法。
例如:
Animal* animal = new Dog(); animal->speak(); // 输出: "Woof!"
尽管 animal
指向的是 Animal
基类,但由于多态性,它将调用 Dog
对象中的 speak()
方法。
实战案例
考虑一个形状类层次结构,包括 Shape
基类和 Circle
、Square
和 Triangle
派生类。
class Shape { public: virtual double area() = 0; }; class Circle : public Shape { public: double area() override { return 3.14 * radius * radius; } }; class Square : public Shape { public: double area() override { return side * side; } }; class Triangle: public Shape { public: double area() override { return 0.5 * base * height; } };
通过使用继承和多态性,我们可以编写一个 calculateTotalArea()
double calculateTotalArea(vector<Shape*>& shapes) { double totalArea = 0; for (Shape* shape : shapes) { totalArea += shape->area(); } return totalArea; }
Dog
클래스는 Animal
기본 클래스의 speak()
메서드를 상속하고 특정 동작을 제공하는 방법입니다. 🎜🎜🎜2. 다형성 🎜🎜🎜다형성은 객체의 실제 유형을 기반으로 런타임에 메서드를 동적으로 호출하는 기능을 의미합니다. 기본 클래스 포인터가 파생 클래스 개체의 메서드에 액세스할 수 있도록 합니다. 🎜🎜C++의 다형성은 가상 함수 테이블을 통해 달성됩니다. 컴파일하는 동안 각 가상 함수에 대해 vtable 항목이 생성됩니다. 기본 클래스 포인터가 가상 함수를 호출하면 개체의 vtable을 조회한 다음 적절한 메서드를 호출합니다. 🎜🎜예: 🎜rrreee🎜 animal
은 Animal
기본 클래스를 가리키지만 다형성으로 인해 Dog
개체를 호출합니다. >speak() 메소드. 🎜🎜🎜실용 사례🎜🎜🎜 Shape
기본 클래스와 Circle
, Square
및 Triangle 파생 클래스입니다. 🎜rrreee🎜상속과 다형성을 사용하면 모든 도형의 전체 면적을 계산할 수 있는 <code>calculateTotalArea()
함수를 작성할 수 있습니다. 🎜rrreee위 내용은 C++의 상속 및 다형성 구현 메커니즘은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!