[c++] 연산자 오버로딩과 상속

C++에서 연산자 오버로딩(Operator overloading)과 상속(Inheritance)은 중요한 기능으로, 이 두 가지 개념을 이해하고 활용함으로써 코드의 가독성을 높이고 재사용성을 높일 수 있습니다. 이번 블로그에서는 C++에서의 연산자 오버로딩과 상속에 대해 살펴보겠습니다.

연산자 오버로딩 (Operator overloading)

C++에서 연산자 오버로딩은 기존 연산자의 기능을 재정의하여 새로운 기능을 추가하거나 다른 형식의 연산을 수행하는 것을 말합니다. 예를 들어, 객체지향 프로그래밍에서 클래스 객체에 + 연산자를 사용하여 두 객체를 더하는 기능을 추가할 수 있습니다.

다음은 + 연산자를 오버로딩 하는 예시 코드입니다.

class Complex {
private:
    double real, imaginary;
public:
    Complex(double r, double i) : real(r), imaginary(i) {}

    Complex operator+(const Complex& other) {
        return Complex(real + other.real, imaginary + other.imaginary);
    }
};

위의 예시에서 + 연산자를 오버로딩하여 두 Complex 객체를 더하도록 정의했습니다.

상속 (Inheritance)

상속은 객체지향 프로그래밍에서 중요한 개념으로, 하위 클래스가 상위 클래스의 특성을 물려받아 새로운 클래스를 정의하는 것을 말합니다. 즉, 상위 클래스의 모든 멤버 변수와 메서드를 하위 클래스에서 사용할 수 있게 됩니다.

다음은 상속을 이용한 예시 코드입니다.

class Animal {
public:
    void eat() {
        std::cout << "Eating..." << std::endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        std::cout << "Barking..." << std::endl;
    }
};

위의 예시에서 Dog 클래스는 Animal 클래스를 상속받아 eat 메서드를 사용할 수 있게 되었습니다.

결론

C++에서의 연산자 오버로딩과 상속은 객체지향 프로그래밍을 더욱 효과적으로 활용하기 위한 중요한 기능입니다. 적절히 활용하여 가독성이 높고 재사용 가능한 코드를 작성할 수 있습니다.

참고 문헌: