[C++ 고급 지식] C++ 순수 가상 함수 및 추상 클래스


C++ 순수 가상 함수 및 추상 클래스

C++에서 추상 클래스와 순수 가상 함수는 프로그래머가 코드를 더 잘 구성하고 다른 프로그래머에게 코드를 사용하는 명확한 방법을 제공하는 데 도움이 되는 일반적인 디자인 패턴입니다. 추상 클래스와 순수 가상 함수를 사용하면 코드 재사용성과 가독성을 개선하고 파생 클래스에서 코드 중복을 방지할 수 있습니다.

추상 클래스는 파생 클래스에 대한 공통 인터페이스를 제공하는 것이 주요 기능인 특수 클래스입니다. 추상 클래스는 인스턴스화할 수 없으며 상속만 가능합니다. 파생 클래스는 인스턴스화할 추상 클래스에 정의된 모든 순수 가상 함수를 구현해야 합니다. 순수 가상 함수는 구현 본문이 없고 파생 클래스에서 구현해야 하는 가상 함수입니다. 순수 가상 함수의 구문은 다음과 같습니다.

virtual void functionName() = 0;

위의 코드에서 는 functionName()구현 본문이 없고 값이 0으로 할당되기 때문에 순수 가상 함수입니다. 파생 클래스는 이 기능을 구현해야 합니다. 그렇지 않으면 추상 클래스가 됩니다.

다음으로 구체적인 예제를 통해 추상 클래스와 순수 가상 함수를 사용하는 방법을 알아보겠습니다. 원, 직사각형, 삼각형 등과 같은 다양한 모양 그리기를 지원하는 그래픽 라이브러리를 작성한다고 가정합니다. 그래픽 그리기를 의미하는 Shape순수 가상 기능이 있는 추상 클래스를 정의할 수 있습니다 . , , draw()의 여러 클래스를 파생할 수 있으며 모두 함수를 구현해야 합니다. 이러한 방식으로 특정 구현에 신경 쓰지 않고 클래스 포인터 또는 참조를 통해 이러한 클래스를 균일하게 작동할 수 있습니다. 이렇게 하면 코드가 훨씬 더 명확하고 이해하기 쉬워집니다.CircleSquareTriangledraw()Shape

샘플 코드는 다음과 같습니다.

#include <iostream>
using namespace std;

// 抽象类 Shape
class Shape {
    
    
public:
    virtual void draw() = 0; // 纯虚函数
};

// 派生类 Circle
class Circle : public Shape {
    
    
public:
    void draw() {
    
    
        cout << "Drawing a circle" << endl;
    }
};

// 派生类 Square
class Square : public Shape {
    
    
public:
    void draw() {
    
    
        cout << "Drawing a square" << endl;
    }
};

// 派生类 Triangle
class Triangle : public Shape {
    
    
public:
    void draw() {
    
    
        cout << "Drawing a triangle" << endl;
    }
};

int main() {
    
    
    Shape* s1 = new Circle();
    Shape* s2 = new Square();
    Shape* s3 = new Triangle();

    s1->draw(); // 输出 "Drawing a circle"
    s2->draw(); // 输出 "Drawing a square"
    s3->draw(); // 输出 "Drawing a triangle"

    delete s1;
    delete s2;
    delete s3;

    return 0;
}

위의 코드에서 우리는 그래픽을 그리는 것을 의미하는 Shape순수 가상 함수가 하나만 있는 추상 클래스를 정의했습니다 . 또한 함수를 구현하는 세 가지 파생 클래스 , 및 를 draw()정의합니다 . 함수 에서 우리 세 클래스 포인터 만듭니다 . 그런 다음 이러한 포인터를 통해 함수를 호출 하고 해당 정보를 출력합니다.CircleSquareTriangledraw()main()Shapes1s2s3CircleSquareTriangledraw()

요컨대, 추상 클래스와 순수 가상 함수는 C++에서 중요한 개념으로, 코드에 더 나은 구조와 가독성을 제공하고 공통 인터페이스를 정의하고 파생 클래스에서 구현할 수 있도록 합니다. 추상 클래스와 순수 가상 함수를 사용하면 코드 재사용성과 가독성이 향상되고 파생 클래스에서 코드 중복을 방지할 수 있습니다. 따라서 추상 클래스와 순수 가상 함수의 사용을 마스터하는 것은 C++ 프로그래밍의 필수적인 부분입니다.

추천

출처blog.csdn.net/duck251/article/details/130535211