A pointer is a variable that stores the memory address of another variable.
I think I can do this ...
In C++, the members of a struct are public by default, while in a class they are private by default.
I think I can do this ...
A constructor is a special member function of a class that initializes objects of the class.
Hmm, what could it be?
The 'this' pointer is used to refer to the calling object of a member function.
This sounds familiar ...
Function overloading allows multiple functions with the same name but different parameter lists.
Hmm, let me see ...
'new' initializes objects and calls constructors, while 'malloc' only allocates memory.
I think, we know this ...
The 'virtual' keyword is used to enable runtime polymorphism in C++.
Let me think ...
'delete' is used for single objects, while 'delete[]' is used for arrays.
Let us take a moment ...
A reference is an alias for another variable, providing an alternative name for it.
I think, I can answer this ...
The 'friend' keyword allows a function or class to access private and protected members of another class.
Let me think ...
A shallow copy copies the values of the object, while a deep copy duplicates the objects pointed to by the pointers.
Hmm, let me see ...
The Rule of Three states that if a class requires a user-defined destructor, copy constructor, or copy assignment operator, it likely requires all three.
I think, we know this ...
'override' ensures a method overrides a base class method, while 'final' prevents further overriding of a method or class.
Hmm, what could it be?
A pure virtual function is a function declared in a base class that must be overridden in derived classes.
Hmm, let me see ...
'const' defines a variable as constant, while 'constexpr' ensures compile-time evaluation.
Hmm, what could it be?
A lambda function is an anonymous function defined using the '[]' syntax.
Hmm, let me see ...
'std::vector' is dynamic in size, while 'std::array' has a fixed size.
Let me try to recall ...
RAII (Resource Acquisition Is Initialization) is a programming idiom where resource allocation is tied to object lifetime.
I think, I know this ...
'std::shared_ptr' allows multiple ownership, while 'std::unique_ptr' allows only single ownership.
Let me think ...
'std::move' enables transferring ownership of resources, facilitating move semantics.
I think I can do this ...
'std::map' is ordered and implemented as a balanced tree, while 'std::unordered_map' is unordered and implemented as a hash table.
Hmm, what could it be?
'throw' raises exceptions, 'noexcept' specifies functions that do not throw, and 'try-catch' handles exceptions.
Let us take a moment ...
'inline' suggests inlining a function, while 'constexpr' ensures compile-time evaluation.
I think I can do this ...
'std::async' is used to run a function asynchronously in a separate thread.
I think I can do this ...
'std::list' is a doubly linked list, while 'std::deque' is a double-ended queue.
I think, I know this ...
'std::function' is a wrapper for callable objects like functions, lambdas, and functors.
Let us take a moment ...
'std::mutex' provides mutual exclusion, while 'std::lock_guard' manages the locking and unlocking of a mutex.
Hmm, let me see ...
'std::weak_ptr' does not contribute to the reference count, preventing circular references.
Hmm, let me see ...
'std::bind' creates a callable object by binding arguments to a function.
Hmm, what could it be?
'emplace_back' constructs an object in place, while 'push_back' copies or moves an existing object.
Let me think ...
SFINAE (Substitution Failure Is Not An Error) is a C++ template metaprogramming feature that allows invalid substitutions in templates to be ignored.
I think I can do this ...
'std::enable_if' is used for SFINAE-based template specialization, while 'std::is_same' checks type equality.
Hmm, what could it be?
Template specialization allows customizing the behavior of a template for a specific type.
Hmm, let me see ...
A variadic template allows a template to accept a variable number of arguments.
Hmm, what could it be?
'decltype' is used to deduce the type of an expression at compile time.
Let me think ...
'lvalue' references refer to named objects, while 'rvalue' references refer to temporary objects.
Let me think ...
'std::forward' is used to preserve the value category (lvalue or rvalue) of a forwarded argument.
Let me think ...
A metaprogram is a program that generates or manipulates other programs at compile time using templates.
I think, we know this ...
'static_assert' checks conditions at compile time, while 'assert' checks conditions at runtime.
I think, I know this ...
'std::tuple' is a fixed-size collection of heterogeneous values.
This sounds familiar ...
'std::optional' represents an optional value, while 'std::variant' holds one value from a set of types.
Hmm, let me see ...
'std::any' is a type-safe container for single values of any type.
I think I can do this ...
'std::atomic' ensures atomic operations, while 'volatile' prevents compiler optimizations on a variable.
I think, I can answer this ...
'std::filesystem' provides utilities for file and directory manipulation.
I think I can do this ...
'std::promise' sets a value or exception, while 'std::future' retrieves the result asynchronously.
Let us take a moment ...
'std::chrono' provides utilities for time manipulation and measurement.
I think, I can answer this ...
'std::allocator' is the default memory allocator, while custom allocators allow specialized memory management.
I think, we know this ...
'std::execution' provides execution policies for parallel algorithms.
Let us take a moment ...
'std::shared_mutex' allows multiple readers or one writer, while 'std::mutex' allows only one thread at a time.
Let us take a moment ...
'std::scoped_lock' provides a convenient way to lock multiple mutexes simultaneously.
Hmm, what could it be?