본문 바로가기
IT 정보

[프로그래밍 언어] C++ 언어란?

by 요호유후 2023. 4. 17.
반응형

프로그래밍 언어 - C++언어란?
프로그래밍 언어 - C++언어란?

 

안녕하세요. 오늘은 C++ 언어에 대해서 알아보도록 하겠습니다. 이름에서 알 수 있듯이, C++ 언어는 1983년 Bjarne Stroustrup이 C 언어를 확장하여 만든 언어입니다. Stroustrup은 C 언어를 사용하면서 객체지향 프로그래밍의 개념을 추가하여 더 나은 프로그램이 가능하다는 아이디어를 갖게 되었고 그렇게 탄생한 것이 C++ 언어입니다. C++이라는 이름은 C 언어의 확장판(Extension)을 의미하는 ++ 연산자에서 유래되었습니다. 이어서 1985년에는 C++ 언어의 첫 표준화 버전인 C++ 98이 출시되어 현재까지 계속 업데이트되어 사용되고 있습니다. 아래에서 C++의 특징, 장단점, 그리고 마지막으로 그 활용에 대해서까지 알아보도록 하겠습니다.

 

 

C++의 특징

C++의 특징은 다음과 같습니다.

  • 객체 지향 프로그래밍(Object-Oriented Programming, OOP) : C++은 객체 지향 프로그래밍을 지원합니다. 이는 프로그램을 구성하는 데이터와 기능을 객체 단위로 모듈화하여 관리하고 재사용 성과 유지 보수 성을 높여주는 장점을 가지고 있습니다.
  • 다중 상속(Multiple Inheritance) : C++은 클래스가 다른 클래스로부터 상속받을 수 있는 다중 상속을 지원합니다.
  • 템플릿(Templates) : C++은 템플릿을 이용하여 일반화된 함수나 클래스를 만들 수 있습니다. 이를 통해 재사용 성이 높아지고 유지 보수 성이 향상됩니다.
  • 오버 로딩(Operator Overloading) : C++은 오버 로딩 기능을 제공합니다. 이는 개발자가 정의한 클래스나 구조체 등에 대해 새로운 연산자를 정의하거나 기존 연산자의 동작을 변경할 수 있도록 합니다.
  • 표준 라이브러리(Standard Library) : C++은 표준 라이브러리를 제공합니다. 이를 이용하면 개발자가 직접 구현하지 않아도 되는 기능들을 제공받을 수 있습니다. 예를 들어, 문자열 처리, 입출력, 알고리즘 등의 기능들이 있습니다.

 

 

C++의 장점
  • 객체 지향 프로그래밍(OOP) : C++은 객체 지향을 지원하기 위해 클래스, 상속, 캡슐화 등의 기능을 제공합니다. 이를 통해 코드의 재사용 성과 유지 보수 성을 높일 수 있습니다. 아래는 객체 지향 프로그래밍에 대한 예시 코드입니다.
#include <iostream>
using namespace std;

class Rectangle
{
private:
	int width, height;
 
public:
	void set_values(int x, int y);
    int area() { return width * height; }
};

void Rectangle::set_values(int x, int y) 
{
	width = x;
    height = y;
}

int main()
{
	Rectangle rect;
    rect.set_values(3, 4);
    cout << "area : " << rect.area();
    
    return 0;
}

 

  • 풍부한 라이브러리 지원 : C++은 많은 표준 라이브러리를 제공하며 자료구조나 알고리즘 등의 기능을 라이브러리를 통해 쉽게 활용할 수 있습니다.
  • 상속 : C++는 클래스 상속을 지원합니다. 상속을 통해 새로운 클래스를 만들 수 있으며 기존 클래스의 속성과 동작을 상속받아 새로운 클래스를 만들 수 있습니다.
  • 다형성 : C++는 다형성을 지원합니다. 다형성은 상속 관계에 있는 클래스에서 부모 클래스의 메서드를 자식 클래스에서 재정의하여 사용하는 것을 말합니다. 아래는 다형성의 예시 코드입니다.
#include <iostream>
using namesapce std;

class Shape
{
protected:
	int width, height;
 
public: 
	Shape(int a = 0, int b = 0)
    {
    	width = a;
        height = b;
    }
    
    virtual int area()
    {
    	cout << "Parent class area : " << endl;
        return 0;
    }
};

class Rectangle: public Shape
{
public:
	Rectangle(int a = 0, int b = 0):Shape(a, b) { }
    itn area()
    {
    	cout << "Rectangle class area : " << endl;
        return(width * height);
    }
};

int main()
{
	Shape *shape;
    Rectangle rec(10, 7);
    shape = &rec;
    shape->area();
    
    return 0;
}

 

 

C++의 단점

C++의 단점으로는 다음과 같습니다.

  • 복잡한 언어 구조 : C++는 객체 지향 프로그래밍과 다중 상속, 템플릿 등 다양한 기능을 포함하고 있어서 언어 구조가 상당히 복잡합니다. 따라서, 초보자들은 이해하기 어렵고 학습 시간이 길어질 수 있습니다.
  • 메모리 누수 : 개발자가 직접 메모리를 할당하고 해제해야 하는 언어입니다. 이러한 메모리 관리는 편리할 수 있으나 메모리 누수(Memory Leak)와 같은 문제를 발생시킬 수 있습니다. 이는 시스템의 안정성에 영향을 미칠 수 있습니다.
  • 오래 걸림 : C++는 매우 복잡한 구조를 가지고 있어서 컴파일 시간이 오래 걸리는 단점이 있습니다. 특히 큰 프로젝트의 경우 빌드 시간이 매우 길어지는 경우가 있습니다.
  • 복잡성 : C++는 C 언어를 기반으로 하고 있으며 다양한 기능과 구조를 추가하여 발전해 왔습니다. 따라서, 코드가 길고 복잡한 경향이 있습니다.

 

 

C++의 활용

C++은 다양한 분야에서 활용됩니다. 예를 들어, 게임 개발, 웹 브라우저, 모바일 앱 개발, 컴파일러 및 운영체제 등에 사용됩니다.

  • 게임 개발 : 게임 엔진을 만들어서 게임을 구현할 수 있습니다. 이때, C++는 높은 성능과 다양한 기능들을 제공하여 게임의 렌더링, 물리 시뮬레이션, 인공지능 등을 구현하는데 매우 유용합니다.
  • 웹 브라우저 : 웹 브라우저는 HTML, CSS, JavaScript 등의 웹 기술로 만들어지지만, 그 백그라운드에서는 C++로 만들어진 브라우저 엔진이 동작합니다. 대표적인 예로는 크롬 브라우저의 브라우저 엔진인 Blink가 있습니다.
  • 하드웨어 제어 : 마이크로프로세서나 마이크로컨트롤러의 개발에 C++를 사용하여 하드웨어와 소프트웨어를 함께 제어할 수 있습니다.
  • 운영체제 : 마지막으로, 운영체제 및 컴파일러 개발에서도 C++는 많이 사용됩니다. C++는 메모리 관리, 다중 스레드 처리, 객체 지향 프로그래밍 등을 지원하여 운영체제 개발에 매우 적합합니다. 또한, C++로 컴파일러를 개발할 수 있으며 이는 다른 언어의 컴파일러나 인터프리터 개발에도 사용됩니다.

 

 

오늘은 여기까지 C++ 언어에 대해서 알아보았습니다. 다음에 또 다양한 언어들에 대해서 설명드리도록 하겠습니다.

반응형

댓글