[2026] 15 Common C++ Beginner Mistakes: From Compile Errors to Runtime Crashes
이 글의 핵심
Fix missing semicolons after classes, forgotten headers, void main, pointer bugs, off-by-one loops, = vs ==, and how to read compiler errors from the first line.
When crashes appear: segmentation fault.
Introduction: “Even Hello World fails”
“The compiler prints a wall of text”
Small mistakes—one character—can trigger many follow-on errors. This guide lists fifteen frequent beginner mistakes with fixes. You will learn:
- How to read errors from the first diagnostic
- Patterns to avoid repeating
- Core syntax rules (
;, headers,main)
Table of contents
1. Eight compile-time mistakes
1. Missing semicolon after class/struct
아래 코드는 cpp를 사용한 구현 예제입니다. 클래스를 정의하여 데이터와 기능을 캡슐화하며, 에러 처리를 통해 안정성을 확보합니다. 코드를 직접 실행해보면서 동작을 확인해보세요.
class MyClass {
int x;
} // error: expected ';' after class definition
class MyClass {
int x;
};
2. Missing #include
Add <iostream>, <string>, <vector>, <cmath>, <algorithm> as needed.
3. Omitting std::
Either std::cout or a using-declaration in .cpp files—not using namespace std in headers.
4. void main
Use int main() and return an int.
5. Scope of loop variables
In modern C++, for (int i=0; …) limits i to the loop unless you declare it outside intentionally.
6. const correctness
Use const std::string& for read-only string parameters so temporaries bind.
7. Array assignment after declaration
Use initializer lists, element-wise assignment, or std::vector.
8. Declaration/definition mismatch
Ensure header declarations exactly match definitions (types, const, namespaces).
2. Four runtime mistakes
9. Uninitialized pointers
Initialize nullptr, check before dereference, or use smart pointers.
10. Off-by-one loops
Use < size, range-for, or at() when unsure.
11. Comparing C strings with ==
Use strcmp or std::string.
12. Returning address of a local variable
Return by value, std::unique_ptr, or heap with clear ownership.
3. Three logic mistakes
13. = vs == in conditions
Use ==, consider Yoda conditions if (10 == x) to catch accidental assignment.
14. Integer division
Cast operands to double when you need floating-point division.
15. Unsigned underflow
Subtracting unsigned values can wrap to huge positives—use signed types or check a >= b first.
4. Reading compiler errors
Read file:line, error: vs warning:, message text, then hints. Fix the first error—later errors often cascade.
Extra pitfalls
cinthengetline: consume newline with ignore between mixed numeric and line input.- Empty vector
operator[]: size first—use push_back or sized constructor. switchfall-through: add break unless intentional.
Debugging habits
- -Wall -Wextra -Werror (where practical).
- MCVE: smallest file that still shows the bug.
- Online compilers (Compiler Explorer, etc.) for isolated tests.
Summary
Top five frequency
- Missing ; after classes
- Missing includes
- Missing std::
- Uninitialized pointers
- Off-by-one indexing
Rules
- }; after class/struct definitions
- Include what you use
- Prefer std:: or targeted
using - Initialize pointers
- Index 0 … size-1
Related posts (internal)
Keywords
C++ beginner, compile error, expected semicolon, cout not declared, pointer initialization, array bounds
Practical tips
- Fix first error first.
- Type small examples yourself—muscle memory matters.
- Turn warnings up early.