출시·고도화 중
Programming language · 1985년 공개
C++는 C의 성능과 하드웨어 제어 능력에 클래스, 템플릿, RAII 같은 추상화를 더한 컴파일 언어로, 게임 엔진부터 시스템 소프트웨어까지 폭넓게 쓰입니다.
C++는 비야네 스트롭스트룹(Bjarne Stroustrup)이 벨 연구소에서 'C with Classes'라는 이름으로 시작한 범용 프로그래밍 언어입니다. C와 거의 호환되면서 클래스, 템플릿, 예외, 연산자 오버로딩 같은 기능을 더했고, 지금은 ISO 위원회(WG21)가 표준을 관리합니다. C++11 이후로는 약 3년마다 새 표준이 나오며, C++17과 C++20을 거치며 '모던 C++'라 부르는 더 안전하고 표현력 있는 작성 방식이 자리 잡았습니다.
C++는 실행 성능과 메모리 배치를 세밀하게 다뤄야 하는 곳에서 강점을 보입니다. 게임 엔진, 웹 브라우저, 데이터베이스, 컴파일러, 금융 거래 시스템, 임베디드 장치처럼 지연 시간과 자원 사용이 중요한 소프트웨어가 대표적입니다. 쓰지 않는 기능에는 비용을 치르지 않는다는 '제로 오버헤드' 원칙 덕분에 고수준 추상화를 쓰면서도 기계어에 가까운 효율을 얻을 수 있습니다.
처음 배운다면 운영체제에 맞는 컴파일러(Windows는 Visual Studio의 MSVC, macOS는 Xcode 명령줄 도구의 Clang, Linux는 g++)를 설치하고 짧은 프로그램을 직접 컴파일해 보는 것부터 시작하기를 권합니다. 문법을 익힐 때는 learncpp.com 같은 입문 강좌를, 표준 라이브러리를 찾아볼 때는 cppreference.com을 곁에 두면 좋습니다. 처음부터 std::vector, std::string, 스마트 포인터처럼 표준 라이브러리가 제공하는 도구를 쓰는 습관을 들이면 메모리 관리 실수를 크게 줄일 수 있습니다.
클래스, 템플릿, 인라인 함수 같은 추상화를 써도 직접 작성한 저수준 코드에 가까운 기계어로 컴파일되며, 쓰지 않는 기능에는 비용이 들지 않습니다.
객체가 범위를 벗어날 때 소멸자가 자동으로 호출되므로 메모리, 파일, 잠금 같은 자원을 가비지 컬렉터 없이도 예측 가능하게 정리할 수 있습니다.
템플릿으로 타입에 독립적인 코드를 작성할 수 있고, 표준 라이브러리는 컨테이너, 알고리즘, 문자열, 스레드 같은 검증된 구성 요소를 제공합니다.
절차적, 객체 지향, 제네릭, 함수형 스타일을 함께 쓸 수 있으며, C++20의 콘셉트와 범위(ranges)처럼 표준이 꾸준히 발전합니다.
Windows에서는 Visual Studio를 설치하면서 'C++를 사용한 데스크톱 개발' 워크로드를 선택하면 MSVC 컴파일러가 함께 설치됩니다. macOS에서는 터미널에서 xcode-select --install을 실행해 Xcode 명령줄 도구(Clang)를 설치합니다. Debian·Ubuntu 계열 Linux에서는 아래 명령으로 g++와 CMake를 설치합니다.
sudo apt install build-essential cmake새 터미널을 열고 컴파일러 버전이 표시되는지 확인합니다. macOS에서는 g++ 명령이 Apple Clang으로 연결됩니다. Windows에서는 'Developer Command Prompt for VS'를 열고 cl을 실행하면 MSVC 버전을 볼 수 있습니다.
g++ --versionhello.cpp를 C++20 표준과 경고 옵션을 켜고 컴파일한 뒤 실행합니다. Windows의 MSVC에서는 cl /EHsc /std:c++20 hello.cpp로 컴파일하고 hello.exe를 실행합니다.
g++ -std=c++20 -Wall -Wextra -o hello hello.cpp && ./hello#include <iostream>은 표준 입출력 라이브러리를 불러옵니다. main 함수는 프로그램이 시작되는 곳이며, std::cout에 << 연산자로 문자열을 보내 화면에 출력합니다. return 0은 프로그램이 정상적으로 끝났음을 운영체제에 알립니다. g++에 -std=c++20을 주어 C++20 표준으로 컴파일하고, 만들어진 hello 파일을 실행합니다.
hello.cpp
#include <iostream>
int main() {
std::cout << "Hello, world!\n";
return 0;
}
g++ -std=c++20 -o hello hello.cpp && ./hello설치부터 C++ 의 핵심 개념까지, 여섯 장으로 차근차근 따라 합니다.
C++ 에 관해 묻고, 경험을 나누고, 의견을 주고받는 곳입니다.
아직 토론이 없습니다. 첫 이야기를 시작해 보세요.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.