Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. C++ Dictionary
  3. Beginners Guide: Overview, Features, and Learning Path

Beginners Guide: Overview, Features, and Learning Path

This page gives you an overview of C++, explains how it relates to C, and guides you through the recommended learning order for this dictionary.

What is C++?

C++ is a programming language developed by Bjarne Stroustrup at AT&T Bell Laboratories in the 1980s. In short, it is a language that extends C by adding object-oriented programming through classes and generic programming through templates.

Almost all C code compiles as valid C++. C++ is an extension of C, not a completely different language.

The relationship between C and C++

C++ C language (mostly compatible) + classes / templates / STL

Pointers, structs, and functions from C all work in C++ as-is. C++ builds on C by adding object-oriented programming, templates, and the Standard Template Library (STL).

C vs C++ — Features and Trade-offs

C language characteristics

C is known for its simple syntax and direct hardware control.

/* C: representing a character using a struct and function */
struct Fighter {
    char name[32];
    int power;
};

void show_fighter(struct Fighter *f) {
    printf("%s: power = %d\n", f->name, f->power);
}

The C++ approach — abstraction through classes

In C++, you can bundle data and operations together into a class.

// C++: bundling data and operations into a class
class Fighter {
public:
    std::string name;
    int power;

    void show() const {
        std::cout << name << ": power = " << power << std::endl;
    }
};

Fighter f;
f.name = "Okabe Rintaro";
f.power = 9500;
f.show();

Comparison: C vs C++

Each language has its strengths and weaknesses. Neither is universally better — the right choice depends on the use case and requirements.

CC++
Programming styleProceduralProcedural + OOP + Generic
AbstractionStructs + function pointersClasses + virtual functions + templates
Memory managementmalloc/free (manual)new/delete + smart pointers
Standard librarystdio.h etc. (small)STL (containers, algorithms, etc.)
Code sizeCompactTends to grow with features
Learning costLowerHigher (templates, RAII, etc.)
Primary usesOS, embedded, driversGames, applications, high-performance software

Key Features of C++

Classes and object-oriented programming

You can define classes that bundle data and operations together. See classes for details.

Templates

Templates let you write code that works with any type. The same logic can operate on int, double, or any user-defined type. See templates for details.

STL (Standard Template Library)

A library of generic data structures and algorithms: dynamic arrays, maps, sorting, and more. Includes std::vector, std::map, std::sort, and many others.

Smart pointers and RAII

Mechanisms to prevent memory leaks. RAII (Resource Acquisition Is Initialization) ties resource allocation and deallocation to an object's lifetime. std::unique_ptr and std::shared_ptr are the primary examples. See smart pointers for details.

Recommended Learning Order

After getting an overview from this page, working through the C++ dictionary pages in the following order allows for efficient learning.

StepTopicPage
1Setup and First ProgramC++ Development Environment Setup

Hello World, Compile and Run
2Variables and Data TypesVariable Declaration and Initialization

int / double / char / bool

auto Type Deduction

const / constexpr

nullptr / static_cast / dynamic_cast
3Operators and Control FlowArithmetic / Comparison / Logical Operators

if / else if / else

switch / case

for / range-based for

while / do-while
4Strings and Arraysstd::string

std::stringstream

Arrays (int[])
5FunctionsFunction Definition (Parameters, Return Values)

Function Overloading

Lambda Expressions [](){}
6Pointers, References, and MemoryPointers (* / &)

References (&)

Smart Pointers Overview

std::unique_ptr

std::shared_ptr

std::weak_ptr
7Classes and OOPClass Definition (Members and Methods)

Constructor / Destructor

Inheritance (public / protected / private)

Multiple Inheritance

Polymorphism (virtual)

Abstract Class (Pure Virtual)

override / final

Operator Overloading

Copy Constructor / Assignment Operator

struct

enum / enum class

namespace

std::initializer_list
8Templates and STLFunction Templates

Class Templates

Variadic Templates

Concepts (C++20)

std::vector

std::list

std::map / std::unordered_map

std::set / std::unordered_set

std::stack / std::queue

<algorithm> Header

Iterators

Ranges (C++20)
9Modern C++ FeaturesMove Semantics

Rvalue References (&&)

Perfect Forwarding (std::forward)

std::tuple / std::pair

std::optional

std::bitset
10Exceptions and I/Otry / catch / throw

File I/O (fstream)
11Concurrencystd::thread

std::mutex / std::lock_guard

std::async / std::future

Coroutines (C++20)
12Other Modern FeaturesModules (C++20)

<chrono> (Time)

std::regex (Regular Expressions)

C++ Tips and Tricks

This is just one possible learning path. If you want to look up a specific topic, use the menu on the left to navigate directly to any page.

Overview

C++ combines the raw performance and hardware control of C with powerful abstraction mechanisms: object-oriented programming, templates, and the STL. It is widely used wherever performance matters — game engines (such as Unreal Engine), web browsers, databases, and embedded systems.

The learning curve is steep, but mastering C++ gives you a deep understanding of how programs work at the memory and CPU level. You do not need to learn everything at once. A practical starting point is variables, control structures, functions, and classes.

If you find any errors or copyright issues, please .