Tags

The very beginning mind itself is the most accomplished mind of true enlightenment.
C++

Observer Pattern

Publish-subscribe model for handling one-to-many objects communication


Adapter Pattern

Enable incompatible interfaces to work together


Decorator Pattern

Add new functionality to a class without changing its structure


Proxy Pattern

Authority management of objects


Factory Pattern

Simple factory, factory method and abstract factory


Singleton Pattern

Eager singleton class and thread-safe lazy singleton class


Thread Visibility and volatile

A keyword to prevent compiler optimizations


Atomic Operations

Lock-free multithreading with atomic operations


Producer-Consumer Problem

A classical thread communication mechanism


Mutual Exclusion

Important concept to prevent race conditions


Multithreaded Programming with std::thread

Multithreading is no longer a hassle


Important Features in C++11

What you must know about C++11


More about Lambda Expressions

Simple and powerful anonymous functions


std::bind() - A Simple Thread Pool

Implement a simple thread pool with std::bind()


More about std::function

Underlying implementation of std::function


Template Specialization and Argument Deduction

More advanced techniques about templates


Introduction to std::function

A powerful class to bind a function with a function object


More about Binders

Underlying implementation of bind1st and bind2nd


Custom Deleters

Custom resource release for smart pointers


Smart Pointers with Reference Counting

shared_ptr and weak_ptr


Smart Pointers without Reference Counting

auto_ptr, scoped_ptr and unique_ptr


Smart Pointers

Powerful tools in memory management


Move Semantics and Perfect Forwarding

Implement a vector container with Rvalue reference member functions


Member Functions with Rvalue References

Good approach to improve memory efficiency


Optimizing Objects in Functions

Three principles of using objects in functions


Behind the Object

What's happening when we are using objects.


Generic Algorithms, Binders and Lambda Expressions

Powerful algorithms to facilitate our work


Function Objects

An important concept in advanced C++ programming


More about Iterators

iterator, const_iterator, reverse_iterator and const_reverse_iterator


Associative Containers

set, map, unordered_set and unordered_map


Container Adaptors

stack, queue and priority_queue


Sequence Containers

vector, deque and list


Four Kinds of Type Conversions

What should type conversions be like in modern C++


Diamond Problem

A common issue in multiple inheritance


Virtual Inheritance and Virtual Base Classes

What must be mastered in multiple inheritance


Frequently Asked Interview Questions - Polymorphism

Common questions about polymorphism


Abstract Classes

Classes with pure virtual functions


Understanding Polymorphism

Why polymorphism is important in object-oriented programming


More about Virtual Functions

Other things worth mentioning about virtual functions


Virtual Functions, Static Binding and Dynamic Binding

How does C++ implement polymorphism


More about Inheritance

Function hiding and type conversions


Look inside Inheritance

The core of object-oriented programming


Overloading of new and delete - Object Pool

A very useful design pattern for resource reuse


More about new and delete

Learn more about memory management mechanisms


Issues of Iterator Invalidation

What we must pay attention to when using iterators


Introduction to Iterators

A transparent interface of container traversal


Operator Overloading

One of my favorite c++ features


Memory Allocators

Indispensable component in template containers


Class Templates

Common programming paradigm in large libraries


Function Templates

Another important programming paradigm in C++


Pointer to Class Members

Good approach to avoid code redundancy


Various Member Functions

In-depth understanding of the relationship between member functions


Initializer List

Concise way in initializing data members


Shallow Copy and Deep Copy

Issues in copying objects


Constructor and Destructor

Manage the lifecycle of an object


Class and Object

Essences of object-oriented programming


References in Detail

An alias for an existing variable


const and Pointers

Understand const in depth


new and delete

Operators for memory management


Function Overloading

One of static polymorphism


Inline Function

A good optimization approach


Default Parameters

Function with default parameters


Program Compiling and Linking

From source code to executable file


Function Call - Stack Frame

What happen after a function is called


Virtual Address Space of Process - Memory Partition and Layout

What happen after a program starts