C++ 관련 강의
C++ 관련해서 어느정도 지식이 필요하다고 생각이 들었다.
유료, 무료 강의들이 다양하게 있지만, 지금 당장은 무료 강의로 시작하고 나중에 입사하고나서 C++ 유료 강의 중 가장 손꼽히는 따배씨 강의를 수강해볼려고 한다.

그래서 내가 무료로 수강중인 C++강의는 "하루 10분" C++ 강의다.

1/4 정도 수강해본 소감으로는 무료 강의이지만 C++ 기초를 잡기에는 너무나 괜찮다는 생각이 들었다. 언능 마무리하고 따배씨로 넘어가야지!
그리고 보조적으로 활용하는 C++ 강의로는 codecademy에서 제공해주는 강의를 활용하고 있다.

난이도가 매우 쉽기때문에 누구나 어렵지 않게 수강할 수 있으며, 코드 편집기와 터미널창이 함께 제공되기 때문에 누구나 컴파일을 쉽게 할 수 있다. 먼저 C++의 가장 기초 개념에 대해서 알아보며, 컴파일에 대해서 알아보도록 하자.
c++ 기초 개념 정리
0. 컴파일(Compile)이란 무엇인가?
컴파일은 사람이 작성한 코드(소스 코드)를 컴퓨터가 실행할 수 있는 형태로 변환하는 과정이다.

소스코드(.cpp) -> 컴파일 -> 실행파일(a.out 또는 main.exe) -> 실행 의 흐름으로 진행된다.
예를 들어 다음과 같은 명령어를 실행한다.
g++ calculator.cpp -o calculator
- g++ : 컴파일러
- calculator.cpp : 직접 작성한 c++ 코드
- -o calculator : 실행파일 이름 지정
위 과정을 통해 calculator라는 실행 파일이 생성되고, 이를 실행하면 프로그램이 동작하게 된다.
./calculator
그렇다면 왜 컴파일이 필요한가??
컴퓨터는 C++ 코드를 직접 이해하지 못한다. 컴퓨터는 기계어를 이해하며 사람이 작성한 코드를 번역해주는 것이 컴파일러다.
컴파일 과정에서 문법, 타입 검사 또는 최적화와 실행 파일 생성의 과정이 진행된다.
디버그와의 차이점은?
디버그는 프로그램 실행 중 발생하는 문제를 찾아내고 수정하는 과정이다. 즉, 컴파일은 실행 가능하게 만드는 과정이고, 디버그는 실행 중 문제를 해결하는 과정이다.
그럼 이제 본격적으로 C++에 대해서 알아보도록 하자.
1. C++이란 무엇인가?
C++는 시스템 프로그래밍과 고성능 애플리케이션 개발을 위해 설계된 프로그래밍 언어이다. C 언어를 기반으로 "객체지향 개념이 추가"되었으며, 현재는 절차지향, 객체지향, 제네릭 프로그래밍을 모두 지원하는 다중 패러다임 언어로 발전했다.
특히 다음과 같은 특징을 가진다.
- 컴파일 언어로 실행 속도가 빠름
- 메모리를 직접 제어할 수 있음
- 대규모 시스템 및 성능이 중요한 분야에 적합
- 로봇, 게임, 운영체제, 임베디드 시스템에서 많이 사용됨
2. C++ 프로그램의 기본 구조
C++ 프로그램은 일반적으로 다음과 같은 구조를 가진다.
#include <iostream>
using namespace std;
int main() {
cout << "Hello, C++" << endl;
return 0;
}
구성 요소는 다음과 같다.
- `#include <iostream>`
입출력 기능을 사용하기 위한 헤더 파일 - `using namespace std;`
표준 라이브러리를 간단하게 사용하기 위한 선언 - `main()` 함수
프로그램이 실행되는 시작 지점 - `cout`
출력 기능 (콘솔 출력) - `return 0;`
프로그램 정상 종료
3. 변수와 자료형
C++는 정적 타입 언어로, 변수의 타입을 명확히 선언해야 한다.
int age = 30; //정수형 선언
double height = 175.5; //실수형 선언
char grade = 'A'; //문자 선언
bool isStudent = true; //불린형 선언
string name = "Kim"; //문자열 선언
4. 입출력
C++에서 입출력은 표준 입출력 스트림을 통해 이루어진다. 가장 기본적으로 사용하는 객체는 다음 두 가지이다.
- `cin`: 입력
- `cout`: 출력
이들은 `<iostream>` 헤더에 정의되어 있다.
출력 (cout) 사용 방법
#include <iostream>
//(1) \n 을 사용하여 단순 줄바꿈(빠름)
std::cout << "Hello World!\n";
//(2) endl 을 사용한 줄바꿈
std::cout << "Hello World!" << endl;
입력 (cin) 사용 방법
만약 문자열 입력을 할 경우에는 두 가지 방식이 존재한다. 먼저 cin만 단독으로 사용할 경우이다.
#include <iostream>
// 입력 데이터를 변수에 저장하기 위해 변수 선언
string name;
std::cin >> name;
# 입력
Ko MyeongJin
# 출력
Ko
이 경우 공백이 포함된 문자열을 입력하는 경우 공백 전까지만 입력된다.
따라서 공백까지 포함한 전체 문자열을 출력해주는 getline 방식을 사용할 경우 공백을 포함한 전체 문자열이 출력된다.
#include <iostream>
string name;
getline(cin, name);
# 입력
Ko MyeongJin
# 출력
Ko MyeongJin
cin과 getline을 혼용해서 사용할 때 주의할 점이 있다.
#include <iostream>
int age;
string name;
std::cin >> age;
std::getline(cin, name); // 문제 발생 가능
- `cin >> age`이후 입력 버퍼에 `\n`이 남아 있음
- `getline`이 그 줄바꿈을 바로 읽어버리게 된다.
이 경우 버퍼를 지우고 사용하면 문제가 되지 않는다.
#include <iostream>
std::cin >> age;
cin.ignore(); // 버퍼 지우기
std::getline(cin, name);
그런데 버퍼라는 단어는 어떤걸 의미하는 걸까? 버퍼에 대해 간단하게 설명하면 입출력은 내부적으로 버퍼(buffer)를 사용한다.
입력: 10\n
- `10`은 age라는 변수에 저장됨
- `\n`은 버퍼에 남음
이 때문에 `getline`과 혼용할 때 문제가 발생한다.
5. 연산자
c++에서는 다양한 연산자를 제공한다. 연산자는 다른 프로그래밍 언어들과 비슷하다.
산술 연산자
#include <iostream>
int main() {
int a = 10, b = 3;
std::cout << a + b << std::endl; // 덧셈: 13
std::cout << a - b << std::endl; // 뺄셈: 7
std::cout << a * b << std::endl; // 곱셈: 30
std::cout << a / b << std::endl; // 나눗셈(몫): 3
std::cout << a % b << std::endl; // 나머지: 1
return 0;
}
비교 연산자
#include <iostream>
int main() {
int a = 10, b = 3;
std::cout << (a == b) << std::endl; // 같다: 0 (false)
std::cout << (a != b) << std::endl; // 다르다: 1 (true)
std::cout << (a > b) << std::endl; // 크다: 1 (true)
std::cout << (a < b) << std::endl; // 작다: 0 (false)
std::cout << (a >= 10) << std::endl; // 크거나 같다: 1 (true)
std::cout << (b <= 2) << std::endl; // 작거나 같다: 0 (false)
return 0;
}
논리 연산자
#include <iostream>
int main() {
bool t = true;
bool f = false;
std::cout << (t && f) << std::endl; // AND(둘 다 참이면 참): 0 (false)
std::cout << (t || f) << std::endl; // OR(하나라도 참이면 참): 1 (true)
std::cout << (!t) << std::endl; // NOT(참을 거짓으로): 0 (false)
std::cout << (!f) << std::endl; // NOT(거짓을 참으로): 1 (true)
return 0;
}
6. 조건문
c++에서 조건문은 프로그램의 흐름을 결정하는 중요한 요소이다. 가장 자주 쓰이는 `if`, `else if`, `else`문과 `switch`문을 알아보도록 하겠다.
if / else if / else 문
#include <iostream>
int main() {
int score = 85;
if (score >= 90) {
std::cout << "A 학점" << std::endl; // 90점 이상일 때
}
else if (score >= 80) {
std::cout << "B 학점" << std::endl; // 80점 이상 90점 미만일 때: 실행됨
}
else if (score >= 70) {
std::cout << "C 학점" << std::endl; // 70점 이상 80점 미만일 때
}
else {
std::cout << "F 학점" << std::endl; // 그 외 모든 경우
}
return 0;
}
# 출력 결과
B 학점
switch / case 문
특정 변수의 값에 따라 명확하게 분기할 때 효율적이다. 각 case 끝에 break를 넣어야 다음 코드로 넘어가지 않는다.
#include <iostream>
int main() {
int menu = 2;
switch (menu) {
case 1:
std::cout << "아메리카노 선택" << std::endl;
break;
case 2:
std::cout << "카페라떼 선택" << std::endl; // menu가 2이므로 실행됨
break;
case 3:
std::cout << "카푸치노 선택" << std::endl;
break;
default:
std::cout << "잘못된 메뉴 번호입니다." << std::endl; // 일치하는 case가 없을 때
break;
}
return 0;
}
삼항 연산자 (Ternary Operator)
간단한 if-else 문을 한 줄로 줄여 쓸 때 유용하다.
#include <iostream>
int main() {
int age = 20;
// (조건) ? (참일 때 값) : (거짓일 때 값)
std::string result = (age >= 19) ? "성인" : "미성년자";
std::cout << result << std::endl; // "성인" 출력
return 0;
}
7. 반복문
C++에서 for 반복문은 정해진 횟수만큼 코드를 반복할 때 가장 많이 사용된다. 구조가 직관적이라 초기식, 조건식, 증감식을 한 줄에 관리할 수 있다는 장점이 있다. while 반복문과 for 반복문을 차례대로 알아보자.
while 반복문
#include <iostream>
int main() {
int i = 0;
int square = 0;
while (i < 10 && square < 10) {
std::cout << i << " " << i*square << std::endl;
i++;
square++;
}
return 0;
}
# 결과
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
정수형 변수 i 가 1씩 증가할 때 마다 제곱해주는 코드이다. `while (조건) {실행할 코드}` 구조로 이루어져 있다.
for 반복문
#include <iostream>
int main() {
for (int i = 99; i > 0; i--) {
std::cout << i << " bottles of pop on the wall.\n";
std::cout << "Take one down and pass it around.\n";
std::cout << i - 1 << " bottles of pop on the wall.\n";
}
return 0;
}
# 결과
99 bottles of pop on the wall.
Take one down and pass it around.
98 bottles of pop on the wall.
98 bottles of pop on the wall.
Take one down and pass it around.
97 bottles of pop on the wall.
....
2 bottles of pop on the wall.
Take one down and pass it around.
1 bottles of pop on the wall.
1 bottles of pop on the wall.
Take one down and pass it around.
0 bottles of pop on the wall.
99개의 병이 1개씩 줄어드는 코드이다. 최종적으로 병의 개수가 0개에 도달하면 for 루프가 멈추게 된다.
글의 내용이 길어져서 다음 글에서 C++ 기초 관련 내용을 마저 작성하도록 하겠습니다.
'프로그래밍 언어 > 03. C++' 카테고리의 다른 글
| [C++] 프로그래밍 기초, 함수(function) 다루기 (2) (0) | 2026.04.01 |
|---|
