
C++는 강력하고 유연한 고수준 언어로, 다양한 언어 개념을 바탕으로 복잡한 시스템과 애플리케이션을 효율적으로 개발할 수 있다. 이번 글에서는 C++의 핵심 언어 개념(Language Concepts)을 정리한다.
C++는 다양한 기본 타입을 제공한다:
int age = 25;
float height = 1.7f;
double salary = 50000.0;
char grade = 'A';
bool isEmployed = true;
조건문, 반복문 등을 통해 프로그램의 흐름을 제어한다.
if (age > 18) {
std::cout << "You are eligible to vote.";
} else {
std::cout << "You are not eligible to vote.";
}
for (int i = 0; i < 5; i++) {
std::cout << "Hello World!";
}
작은 단위로 코드를 분리하여 재사용성과 가독성을 높인다.
int add(int a, int b) {
return a + b;
}
같은 타입의 데이터 묶음을 다룰 때 사용한다.
int marks[] = {90, 80, 95, 85};
std::vector<int> scores = {10, 20, 30, 40};
다른 변수의 메모리 주소를 저장하는 변수로, 효율적인 메모리 제어에 필수적이다.
int num = 10;
int* p = #
사용자 정의 데이터 타입으로, 데이터와 함수를 하나로 묶는다.
struct Student {
std::string name;
int age;
};
class Employee {
public:
std::string name;
int age;
void displayInfo() {
std::cout << "Name: " << name << "\nAge: " << age;
}
};
객체지향 프로그래밍의 핵심 개념으로, 코드 재사용성과 확장성을 높인다.
class Base {
public:
void display() {
std::cout << "This is the base class.";
}
};
class Derived : public Base {
public:
void display() {
std::cout << "This is the derived class.";
}
};
예외 상황을 우아하게 처리하기 위한 구조이다.
try {
int result = a / b;
} catch (const exception &e) {
std::cout << "Caught an exception: " << e.what();
}
auto 키워드를 사용하면 컴파일러가 변수 타입을 자동으로 유추한다.
auto x = 42; // int로 추론됨
C++에서 언어 규칙을 어겼을 때 발생하는 예측 불가능한 결과로, 반드시 피해야 한다.
예:
함수 호출 시 인자의 네임스페이스를 따라 함수 탐색 범위를 확장하는 기능.
namespace MyNamespace {
class MyClass { ... };
std::ostream& operator<<(std::ostream& os, const MyClass& obj) { ... }
}
MyNamespace::MyClass obj;
std::cout << obj; // ADL 덕분에 작동함
C++에서 함수 오버로딩, 네임스페이스 등을 지원하기 위해 함수/변수 이름을 컴파일 타임에 고유하게 인코딩하는 과정.
int add(int a, int b) {}
// → 컴파일러가 _Z3addii 같은 내부 이름으로 변경함
전처리기 수준에서 코드 치환을 수행하는 기능으로, #define을 통해 정의한다.
#define PI 3.14159
#define SQUARE(x) ((x) * (x))
조건부 컴파일 예시:
#ifdef DEBUG
std::cout << "디버깅 모드";
#endif
이 글은 C++를 처음 시작하거나 복습하고자 하는 개발자를 위한 핵심 요약이며, 이후 고급 개념으로 확장하기 위한 기초를 다지는 데 도움이 된다.