Hello World in C++
C++ hello world introduces namespaces, streams, and the compilation model shared with C but extended for classes and templates.
Basic Program
#include <iostream>
int main() {
std::cout << "Hello, World!\n";
return 0;
}
Using namespace
#include <iostream>
using std::cout;
using std::endl;
int main() {
cout << "Hello" << endl;
}
Avoid using namespace std; in headers.
C++20 Format
#include <format>
#include <iostream>
int main() {
std::cout << std::format("Hello, {}!\n", "World");
}
Compilation
g++ -std=c++20 -Wall -Wextra -O2 hello.cpp -o hello
./hello
Multiple Files
// math.hpp
#pragma once
int add(int a, int b);
// math.cpp
int add(int a, int b) { return a + b; }
Common Pitfalls
- Ignoring compiler or linter warnings until they become production bugs.
- Skipping error handling on I/O, allocation, and network operations.
- Using outdated patterns when modern idioms exist in your language version.
- Testing only the happy path without edge cases and failure modes.
Best Practices
- Write tests alongside implementation, not after.
- Prefer explicit, readable code over clever one-liners.
- Use the standard library before reaching for third-party dependencies.
- Profile before optimizing; measure after.
- Document public APIs and non-obvious invariants.
Memory and Performance Notes
iostream adds binary size vs C printf. For embedded, prefer minimal I/O or retarget streams.
Exercise
Split hello world into two files with a utility function in a separate translation unit.
Hint: Use #pragma once or include guards in every header.
Real-World Application
Production codebases combine these fundamentals with logging, metrics, and error recovery. Study mature open-source projects in this language for idiomatic patterns.
Summary
Master this topic through hands-on practice before advancing to the next section in the learning path.
Debugging Checklist
- Reproduce with minimal input.
- Read error messages completely.
- Binary-search the problem space by commenting out code.
- Compare against a known-good reference implementation.
- Write a regression test once fixed.
Quick Reference
Review the code examples on this page and type them manually — muscle memory accelerates learning.
Further Reading
C++ Core Guidelines, cppreference.com, and Effective Modern C++ by Scott Meyers.
Real-World Context
These patterns appear in Chromium, Unreal Engine, PostgreSQL, and countless production systems.
Additional Examples
Consider how this topic applies in a larger project:
// Break the problem into smaller functions
// Test each function independently
// Integrate incrementally
Working through variations of the examples above builds deeper understanding than reading alone.
Interview and Review Questions
- Explain the core concept of this topic in your own words.
- What happens when this code runs with edge-case input (empty, null, zero, max value)?
- How would you debug a bug related to this topic in production?
- What are the performance implications of the approach shown here?
- How does this feature compare to the equivalent in another language you know?