>  기사  >  백엔드 개발  >  C++에서 상속은 어떻게 다형성을 달성합니까?

C++에서 상속은 어떻게 다형성을 달성합니까?

WBOY
WBOY원래의
2024-06-01 13:10:57236검색

C++에서는 상속을 통해 다형성이 달성되므로 객체가 동일한 공통 기본 클래스를 가지더라도 다른 동작을 가질 수 있습니다. 상속은 새 클래스(파생 클래스)가 기존 클래스(기본 클래스)의 멤버를 상속하고 새 멤버를 추가할 수 있는 새 클래스를 만드는 방법입니다. 파생 클래스 형식의 포인터나 참조를 사용하여 가상 함수를 호출하면 파생 클래스의 재정의된 메서드가 호출됩니다.

C++ 中继承如何实现多态性?

C++에서 상속을 통해 다형성을 구현하는 방법

다형성이란 무엇인가요?

다형성을 사용하면 객체가 동일한 공통 기본 클래스를 가지더라도 다른 동작을 가질 수 있습니다. C++에서는 상속을 사용하여 다형성을 달성합니다.

상속

상속은 클래스의 새로운 메서드를 만드는 방법으로, 새 클래스(파생 클래스)가 기존 클래스(기본 클래스)에서 상속됩니다. 파생 클래스는 기본 클래스의 모든 멤버(데이터 및 함수)를 상속하며 자체의 새 멤버를 추가할 수도 있습니다.

상속을 통해 다형성은 어떻게 달성되나요?

다형성에서 파생 클래스 객체는 기본 클래스 유형에 대한 포인터나 참조를 가질 수 있습니다. 파생 클래스 형식의 포인터나 참조를 사용하여 가상 함수를 호출하면 파생 클래스의 재정의된 메서드가 호출됩니다.

예:

class Animal {
public:
    virtual void makeSound() {
        cout << "Animal makes a sound" << endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {
        cout << "Woof woof!" << endl;
    }
};

class Cat : public Animal {
public:
    void makeSound() override {
        cout << "Meow meow!" << endl;
    }
};

int main() {
    Animal* animal = new Cat(); // 指向 Cat 对象的 Animal 指针
    animal->makeSound(); // 输出 "Meow meow!"
}

위의 예에서는

  • Animal이 기본 클래스입니다.
  • Animal 是基类。
  • DogCat 是派生类。
  • makeSound 是一个虚函数,在派生类中重写。
  • animal 是一个指向派生类对象的基类指针。

当调用 animal->makeSound() 时,会调用派生类(Cat)中重写的 makeSoundDogCat는 파생 클래스입니다.

makeSound는 파생 클래스에서 재정의되는 가상 함수입니다. 🎜animal은 파생 클래스 객체를 가리키는 기본 클래스 포인터입니다. 🎜animal->makeSound()를 호출하면 파생 클래스(Cat)에서 재정의된 makeSound 메소드, "Meow meow!"를 출력합니다. 🎜

위 내용은 C++에서 상속은 어떻게 다형성을 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.