프로그래밍/C++

C++ 프로그래밍 입문: 역사, 특징, 설치 및 첫 번째 프로그램

shimdh 2025. 1. 31. 10:50
728x90

1. C++의 역사

C++는 1979년 벨 연구소(Bell Labs)의 Bjarne Stroustrup에 의해 개발되었습니다. C++는 C 언어를 기반으로 하여 객체 지향 프로그래밍(OOP) 개념을 도입한 언어입니다. 초기에는 "C with Classes"로 불렸으며, 이후 C++로 명명되었습니다.

1.1 C++의 주요 버전과 발전 과정

  • C++98: 첫 번째 공식 표준으로, 클래스, 상속, 다형성 등의 OOP 기능이 도입되었습니다.
  • C++11: 자동 타입 추론(auto), 범위 기반 for 루프, 스마트 포인터 등 혁신적인 기능이 추가되었습니다.
  • C++14: C++11의 작은 문제들을 해결하고 일부 기능을 강화했습니다.
  • C++17: 새로운 라이브러리와 문법적 개선사항들이 추가되었으며, 성능 향상도 이루어졌습니다.
  • C++20: 코루틴, 컨셉 등 최신 기능이 도입되어 더욱 강력해졌습니다.

C++는 지속적으로 발전하며, 현대 소프트웨어 개발에서 여전히 중요한 역할을 하고 있습니다. 특히, 게임 엔진(Unreal Engine, Unity), 금융 모델링, 임베디드 시스템 등에서 널리 사용됩니다.


2. C++의 특징

C++는 다음과 같은 특징을 가지고 있습니다:

2.1 객체 지향 프로그래밍(OOP)

데이터와 함수를 객체로 묶어 코드의 재사용성과 유지보수성을 높입니다. 클래스, 상속, 다형성 등의 개념을 지원합니다.

예시:

class Dog {
public:
    void bark() {
        std::cout << "Woof!" << std::endl;
    }
};

int main() {
    Dog myDog;
    myDog.bark(); // 출력: Woof!
    return 0;
}

2.2 고성능

저수준 메모리 조작이 가능하여 높은 성능을 요구하는 애플리웨어에 적합합니다. C++는 하드웨어에 가까운 수준에서 작동하므로, 시스템 프로그래밍이나 실시간 시뮬레이션에 적합합니다.

예시:

#include <iostream>

int main() {
    int* ptr = new int(10); // 동적 메모리 할당
    std::cout << "Value: " << *ptr << std::endl;
    delete ptr; // 메모리 해제
    return 0;
}

2.3 다양한 라이브러리

표준 템플릿 라이브러리(STL)를 포함해 다양한 기능을 제공합니다. STL은 컨테이너(벡터, 리스트 등), 알고리즘(정렬, 검색 등), 반복자 등을 제공하여 개발 속도를 높입니다.

예시:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    for (int num : numbers) {
        std::cout << num << " ";
    }
    return 0;
}

2.4 포괄적인 데이터 타입 지원

기본 데이터 타입(int, float 등)뿐만 아니라 사용자 정의 데이터 타입도 생성할 수 있습니다. 이를 통해 복잡한 데이터 구조를 쉽게 표현할 수 있습니다.

예시:

#include <iostream>

struct Point {
    int x;
    int y;
};

int main() {
    Point p = {10, 20};
    std::cout << "Point: (" << p.x << ", " << p.y << ")" << std::endl;
    return 0;
}

3. C++ 개발 환경 설정

C++ 프로그래밍을 시작하기 위해서는 컴파일러와 통합 개발 환경(IDE)을 설치해야 합니다. 이 과정은 프로그래밍을 시작하는 데 있어 매우 중요한 단계입니다. 올바르게 설치하고 설정하면 코드 작성, 실행 및 디버깅이 훨씬 수월해집니다.

3.1 컴파일러 선택

C++ 프로그램은 소스 코드를 기계어로 변환하여 실행할 수 있도록 해주는 컴파일러가 필요합니다. 여러 가지 컴파일러가 있지만, 가장 많이 사용되는 몇 가지를 소개합니다:

  • GCC (GNU Compiler Collection): 리눅스에서 주로 사용되며, 다양한 플랫폼에서도 사용할 수 있습니다.
  • MSVC (Microsoft Visual C++): 윈도우 운영체제에서 사용하는 Microsoft의 공식 컴파일러입니다.
  • Clang: LLVM 프로젝트의 일부로, 빠르고 효율적인 컴파일을 지원합니다.

3.2 통합 개발 환경(IDE)

IDE는 코드 편집기, 디버거 및 빌드 도구를 하나의 패키지로 제공하여 프로그래밍 작업을 더 쉽게 만들어 줍니다. 다음과 같은 IDE를 고려해 볼 수 있습니다:

  • Visual Studio: MSVC 기반의 강력한 IDE로, 윈도우 개발자에게 적합합니다. 디버깅, 프로파일링, 코드 분석 등 다양한 기능을 제공합니다.
  • Code::Blocks: 크로스 플랫폼 IDE로, GCC와 잘 호환됩니다. 가볍고 사용하기 쉬운 인터페이스를 제공합니다.
  • Eclipse CDT: Java 기반의 Eclipse에 C/C++ 플러그인을 추가하여 사용할 수 있습니다. 다양한 플러그인을 통해 기능을 확장할 수 있습니다.

3.3 설치 과정

3.3.1 Windows에서 Visual Studio 설치

  1. Visual Studio 다운로드 페이지에 접속합니다.
  2. "Community" 버전을 선택하여 다운로드 후 실행합니다.
  3. 설치 중 "Desktop development with C++" 워크로드를 선택하고 필요한 구성 요소들을 체크한 후 "Install" 버튼을 클릭합니다.

3.3.2 Linux에서 GCC 설치

sudo apt update
sudo apt install build-essential

3.3.3 macOS에서 Xcode Command Line Tools 설치

xcode-select --install

3.4 환경 변수 설정

Windows에서는 시스템 속성 > 고급 시스템 설정 > 환경 변수에서 PATH 변수를 수정하여 컴파일러 경로를 추가합니다.

Linux 또는 macOS에서는 .bashrc 또는 .zshrc 파일에 아래와 같이 추가합니다:

export PATH=$PATH:/usr/local/bin/gcc/bin/

변경 사항 적용 후 source ~/.bashrc 또는 source ~/.zshrc 명령어를 통해 반영합니다.


4. 첫 번째 C++ 프로그램

환경 설정이 완료되었다면, 간단한 "Hello World" 프로그램을 작성해 보겠습니다.

#include <iostream> // 입출력을 위한 헤더 파일

int main() {
    std::cout << "Hello, World!" << std::endl; // 화면에 출력
    return 0; // 프로그램 종료
}

위 코드를 hello.cpp 파일로 저장한 뒤, 터미널에서 다음과 같이 컴파일하고 실행할 수 있습니다:

g++ hello.cpp -o hello    # GCC 사용 시 
./hello                    # 생성된 실행 파일 실행 

Visual Studio에서는 새 프로젝트 생성 후 위 코드를 붙여넣고 'Run' 버튼을 클릭하여 실행할 수 있습니다.


5. C++의 활용 분야

C++는 다양한 분야에서 활용되고 있습니다. 그 중 몇 가지 주요 분야를 살펴보겠습니다.

5.1 게임 개발

C++는 게임 개발에서 가장 많이 사용되는 언어 중 하나입니다. Unreal Engine과 같은 게임 엔진은 C++로 작성되어 있으며, 고성능 그래픽 및 물리 엔진을 구현하는 데 적합합니다.

예시:

#include <iostream>

class GameCharacter {
public:
    void attack() {
        std::cout << "Character attacks!" << std::endl;
    }
};

int main() {
    GameCharacter hero;
    hero.attack();
    return 0;
}

5.2 시스템 프로그래밍

운영 체제, 드라이버, 임베디드 시스템 등 저수준 소프트웨어를 개발하는 데 C++가 널리 사용됩니다. C++는 하드웨어에 직접 접근할 수 있는 능력을 제공하여 시스템 리소스를 효율적으로 관리할 수 있습니다.

예시:

#include <iostream>

int main() {
    int* memoryBlock = new int[100]; // 동적 메모리 할당
    std::cout << "Memory allocated for 100 integers." << std::endl;
    delete[] memoryBlock; // 메모리 해제
    return 0;
}

5.3 금융 모델링

금융 분야에서는 빠른 계산 능력이 요구됩니다. C++는 복잡한 수학적 모델링과 시뮬레이션을 수행하는 데 적합하며, 고빈도 트레이딩 시스템에서도 사용됩니다.

예시:

#include <iostream>
#include <cmath>

double calculateInterest(double principal, double rate, double time) {
    return principal * std::exp(rate * time);
}

int main() {
    double principal = 1000.0;
    double rate = 0.05;
    double time = 2.0;
    double result = calculateInterest(principal, rate, time);
    std::cout << "Interest: " << result << std::endl;
    return 0;
}

6. C++의 기본 문법과 예제

C++의 기본 문법을 이해하기 위해 몇 가지 예제를 살펴보겠습니다.

6.1 변수와 데이터 타입

C++는 다양한 데이터 타입을 지원합니다. 기본 데이터 타입에는 int, float, double, char, bool 등이 있습니다.

예시:

#include <iostream>

int main() {
    int age = 25;
    float height = 5.9f;
    char grade = 'A';
    bool isStudent = true;

    std::cout << "Age: " << age << std::endl;
    std::cout << "Height: " << height << std::endl;
    std::cout << "Grade: " << grade << std::endl;
    std::cout << "Is Student: " << isStudent << std::endl;

    return 0;
}

6.2 조건문과 반복문

C++는 if, else, switch와 같은 조건문과 for, while, do-while과 같은 반복문을 지원합니다.

예시:

#include <iostream>

int main() {
    int number = 7;

    if (number % 2 == 0) {
        std::cout << number << " is even." << std::endl;
    } else {
        std::cout << number << " is odd." << std::endl;
    }

    for (int i = 0; i < 5; i++) {
        std::cout << "Iteration: " << i << std::endl;
    }

    return 0;
}

6.3 함수

함수는 특정 작업을 수행하는 코드 블록입니다. C++에서는 returnType functionName(parameters) 형식으로 함수를 정의합니다.

예시:

#include <iostream>

int add(int a, int b) {
    return a + b;
}

int main() {
    int result = add(3, 4);
    std::cout << "Sum: " << result << std::endl;
    return 0;
}

7. 결론

C++는 그 강력함과 유연성 덕분에 현대 컴퓨터 과학에서 중요한 위치를 차지하고 있습니다. 이번 포스트에서는 C++의 역사와 특징을 알아보고, 개발 환경을 설정하는 방법을 살펴보았습니다. 또한, 간단한 예제를 통해 첫 번째 C++ 프로그램을 작성해 보았습니다.

C++는 복잡한 문제 해결 능력을 키우고 실제 세계 문제를 해결하는 데 큰 도움이 되는 언어입니다. 기초부터 점차 심화된 개념까지 학습하면서 여러분은 더 나은 프로그래머가 되어갈 것입니다!

728x90