[c++] 가상 함수와 자료구조(data structure)의 적용

이번에는 C++에서 가상 함수(virtual function)와 자료구조(data structure)의 적용에 대해 알아보겠습니다.

가상 함수(virtual function)

가상 함수는 C++에서의 다형성을 구현하는 데 사용됩니다. 이것은 상속된 클래스에서 함수를 오버라이딩(overriding)하여 동일한 이름의 함수가 서로 다른 동작을 하는 것을 의미합니다. 이것은 객체 지향 프로그래밍 언어에서 많이 볼 수 있는 특징 중 하나입니다.

예제 코드

#include <iostream>

class Animal {
public:
    // 가상 함수
    virtual void speak() {
        std::cout << "동물이 소리를 냅니다." << std::endl;
    }
};

class Dog : public Animal {
public:
    // 가상 함수를 오버라이딩
    void speak() override {
        std::cout << "멍멍!" << std::endl;
    }
};

class Cat : public Animal {
public:
    // 가상 함수를 오버라이딩
    void speak() override {
        std::cout << "야옹!" << std::endl;
    }
};

int main() {
    Animal* animal;

    animal = new Dog();
    animal->speak(); // 멍멍!

    animal = new Cat();
    animal->speak(); // 야옹!

    delete animal;

    return 0;
}

위 예제에서는 Animal 클래스의 speak 함수를 가상 함수로 선언하고, 이를 DogCat 클래스에서 오버라이딩하여 다른 출력을 하도록 만들었습니다.

자료구조(data structure)의 적용

C++에서 자료구조는 데이터를 구조화하여 효율적으로 저장하고 처리하기 위한 방법을 제공합니다. 여러 가지 자료구조가 있지만, 배열, 연결 리스트, 스택, 큐, 트리 등이 가장 흔히 사용되는 자료구조입니다. 이러한 자료구조를 적절히 활용하면 데이터를 효율적으로 조작할 수 있습니다.

예제 코드

#include <iostream>
#include <vector>

int main() {
    // 배열
    int array[5] = {1, 2, 3, 4, 5};

    // 벡터
    std::vector<int> vector = {1, 2, 3, 4, 5};

    // 출력
    std::cout << "배열: ";
    for (int i : array) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    std::cout << "벡터: ";
    for (int i : vector) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

위 예제에서는 배열과 벡터를 사용하여 데이터를 저장하고 출력하는 방법을 보여주었습니다.

결론

C++에서 가상 함수와 자료구조는 객체 지향 프로그래밍과 데이터 처리에 있어 매우 중요한 요소입니다. 이러한 기능들을 잘 활용함으로써 효율적이고 유연한 프로그램을 작성할 수 있습니다.

참고문헌: