icon안동민 개발노트

C++ 언어 소개


C++의 역사와 정의

 C++는 1979년 벨 연구소의 Bjarne Stroustrup에 의해 개발된 프로그래밍 언어입니다. 처음에는 "C with Classes"라는 이름으로 시작되었으며, 1983년에 C++로 이름이 변경되었습니다.

 C++라는 이름의 '++'는 C언어의 증가 연산자에서 따온 것으로, C언어를 한 단계 발전시켰다는 의미를 담고 있습니다. C++는 C언어의 모든 기능을 포함하면서도 객체 지향 프로그래밍(OOP)을 지원하는 다중 패러다임 언어로 발전했습니다.

C++의 주요 특징

  1. 객체 지향 프로그래밍 (OOP) 지원
  • 클래스와 객체: 데이터와 그 데이터를 처리하는 함수를 하나의 단위로 묶을 수 있습니다.
  • 캡슐화: 데이터를 보호하고 외부에서의 직접적인 접근을 제한합니다.
  • 상속: 기존 클래스의 특성을 새로운 클래스가 물려받을 수 있습니다.
  • 다형성: 같은 이름의 함수가 다른 동작을 할 수 있게 합니다.
  1. 높은 성능과 효율성
  • 하드웨어에 가까운 저수준 제어가 가능해 메모리와 CPU 사용을 최적화할 수 있습니다.
  • 컴파일러가 최적화된 기계어 코드를 생성합니다.
  1. 다중 패러다임 언어
  • 절차적 프로그래밍 : C 스타일의 프로그래밍이 가능합니다.
  • 객체 지향 프로그래밍 : 클래스와 객체를 이용한 프로그래밍이 가능합니다.
  • 일반화 프로그래밍 : 템플릿을 이용해 타입에 독립적인 코드를 작성할 수 있습니다.
  1. 풍부한 표준 라이브러리
  • 표준 템플릿 라이브러리(STL) : 다양한 컨테이너, 반복자, 알고리즘을 제공합니다.
  • 입출력 스트림, 문자열 처리, 수학 함수 등 다양한 기능을 제공합니다.
  1. C 언어와의 호환성
  • 대부분의 C 코드를 그대로 C++ 코드로 사용할 수 있습니다.
  • C의 라이브러리를 C++에서도 사용할 수 있습니다.

C++의 주요 용도

  1. 시스템 소프트웨어 개발
  • 운영 체제 : Windows, macOS, Linux 등의 일부가 C++로 작성되었습니다.
  • 디바이스 드라이버 : 하드웨어와 직접 상호작용하는 프로그램을 개발합니다.
  1. 응용 소프트웨어 개발
  • 데스크톱 애플리케이션 : Adobe Photoshop, Microsoft Office 등
  • 데이터베이스 관리 시스템 : MySQL, MongoDB 등
  1. 게임 개발
  • 게임 엔진 : Unreal Engine, Unity의 일부
  • 3D 그래픽스 : OpenGL, DirectX를 이용한 그래픽 프로그래밍
  1. 임베디드 시스템
  • 마이크로컨트롤러 프로그래밍 : Arduino, 자동차 제어 시스템 등
  • IoT(Internet of Things) 디바이스 프로그래밍
  1. 고성능 컴퓨팅
  • 과학 계산 : 물리 시뮬레이션, 기상 예측 모델 등
  • 금융 공학 : 고빈도 거래 시스템, 리스크 분석 등

C와 C++의 주요 차이점

  1. 클래스와 객체
    • C++는 클래스를 통해 데이터와 함수를 하나의 단위로 묶을 수 있습니다.
예시
class Car {
private:
   string brand;
   int speed;
public:
   void accelerate() { speed += 10; }
};
  1. 연산자 오버로딩
  • C++에서는 연산자의 동작을 사용자가 정의할 수 있습니다.
예시
Complex operator+(const Complex& a, const Complex& b) {
   return Complex(a.real + b.real, a.imag + b.imag);
}
  1. 예외 처리
  • C++는 try-catch 구문을 이용한 예외 처리 메커니즘을 제공합니다.
예시
try {
   // 예외가 발생할 수 있는 코드
} catch (exception& e) {
   cout << "예외 발생: " << e.what() << endl;
}
  1. 템플릿
  • C++는 템플릿을 통해 타입에 독립적인 코드를 작성할 수 있습니다.
예시
template <typename T>
T max(T a, T b) {
   return (a > b) ? a : b;
}
  1. 참조 변수
  • C++는 참조를 통해 변수의 별칭을 만들 수 있습니다.
예시
int x = 10;
int& ref = x;  // ref는 x의 참조
ref = 20;  // x의 값도 20으로 변경됨

C++ 프로그램의 기본 구조

 다음은 간단한 C++ 프로그램의 예입니다.

#include <iostream>
using namespace std;
 
int main() {
    cout << "Hello, C++!" << endl;
    
    int number = 42;
    cout << "The answer is: " << number << endl;
    
    return 0;
}

 이 프로그램은 다음과 같은 구조를 가집니다.

  1. #include <iostream> : 입출력 기능을 사용하기 위한 헤더 파일 포함
  2. using namespace std; : 표준 네임스페이스 사용 선언
  3. int main() : 프로그램의 진입점인 main 함수 정의
  4. cout << : 콘솔에 출력하기 위한 스트림 연산자 사용
  5. return 0; : 프로그램의 정상 종료를 나타내는 반환값

연습 문제

  1. C++의 주요 특징 5가지를 나열하고, 각각에 대해 간단히 설명하세요.
  2. C++가 주로 사용되는 분야 3가지를 적고, 각 분야에서 C++를 사용하는 이유를 설명하세요.
  3. C언어와 C++의 주요 차이점 3가지를 설명하고, 각각에 대한 간단한 코드 예제를 작성하세요.
  4. 다음 C++ 코드의 출력 결과를 예측하고, 실제로 실행해 보세요.
#include <iostream>
using namespace std;
 
int main() {
      int x = 5, y = 7;
      cout << "x + y = " << x + y << endl;
      cout << "x * y = " << x * y << endl;
      cout << "y / x = " << y / x << endl;
      cout << "y % x = " << y % x << endl;
      return 0;
}


참고 자료