0% found this document useful (0 votes)
2 views3 pages

CPP Learning Notes

The document provides an overview of C++ as a statically typed, compiled programming language that extends C with features for low-level memory access and high-level abstractions. It covers key concepts such as memory semantics, stack vs. heap allocations, modern RAII, and object-oriented principles, emphasizing efficient resource management and performance. The content is structured to guide readers through basic program structure, memory management, and the use of classes in C++.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views3 pages

CPP Learning Notes

The document provides an overview of C++ as a statically typed, compiled programming language that extends C with features for low-level memory access and high-level abstractions. It covers key concepts such as memory semantics, stack vs. heap allocations, modern RAII, and object-oriented principles, emphasizing efficient resource management and performance. The content is structured to guide readers through basic program structure, memory management, and the use of classes in C++.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

C++ System Programming

Architecture
High-Performance, Multi-Paradigm Engine Design

CORE SEMANTICS, MEMORY LIFECYCLES, AND MODERN OOP MANUAL

1. Introduction to C++
C++ is a statically typed, compiled, general-purpose programming language designed as an extension of the
C programming language ("C with Classes"). It provides low-level memory access and hardware controls
alongside high-level abstractions, making it highly optimal for infrastructure software, game engines, and
performance-critical systems.

Philosophical Design: C++ relies heavily on the **Zero-Overhead Principle**: what you don't use, you
don't pay for. And where abstractions are used, they compile down to code just as efficient as hand-
written assembly.

2. Basic Program Structure & Compiling


Unlike runtime environments with garbage collectors, C++ binaries are compiled directly into platform-specific
machine code commands.

C++ Programming Architecture 1


#include <iostream> // Preprocessor directive for input/output streams

int main() { // Core system execution entry point


std::cout << "Hello C++" << std::endl;
return 0; // Standard exit status signaling safe completion
}

3. Explicit Memory Semantics: Pointers & References


C++ allows direct interaction with physical memory addresses via dual tracking mechanics: Pointers and
References.

Syntax
Mechanism Description / Behavioral Rules
Signature

int* ptr = A separate variable storing raw memory addresses. Can be reassigned or set
Pointer
&var; to nullptr . Requires dereferencing ( *ptr ).

int& ref = An immutable alias for an existing variable space. Cannot be reseated to point
Reference
var; elsewhere and never null. Uses clean syntax.

int value = 42;


int* rawPointer = &value; // Address-of operator reads memory location
int& aliasReference = value; // Direct visual proxy layer

*rawPointer = 100; // Dereference to modify original variable value

4. Memory Allocations: Stack vs. Heap


Managing resource allocations correctly across memory structures defines the core optimization space of low-
level software engines.

• Stack Allocation: Fast automatic allocation managed by the CPU. Objects scoped locally are immediately
popped and unmapped from active threads once code execution passes block scopes.
• Heap Allocation: Dynamic runtime space allocated manually via the new operator. Objects persist
indefinitely across runtime boundaries until explicit delete operators clear allocations. Unreleased heap
spaces generate memory leaks.

int* stackPtr = new int(25); // Allocated on runtime heap


delete stackPtr; // Explicit clean manual release pattern

C++ Programming Architecture 2


5. Modern RAII & RAII-Compliant Smart Pointers
Modern C++ (C++11 and newer) minimizes raw memory manual tracking structures by utilizing **RAII**
(Resource Acquisition Is Initialization), binding resource lifecycles directly to class object stack footprints.

#include <memory>

// Unique Pointer: Sole, exclusive owner of a dynamic memory block


std::unique_ptr<int> uniqueRes = std::make_unique<int>(50);

// Shared Pointer: Reference-counted ownership framework


std::shared_ptr<int> sharedResA = std::make_shared<int>(100);
std::shared_ptr<int> sharedResB = sharedResA; // Count increments to 2

6. Object-Oriented Principles & Classes


C++ uses precise boundaries to organize object-oriented structures, introducing targeted memory cleanups
via explicit **Destructors**.

class Shape {
public:
virtual void draw() const = 0; // Pure virtual function defining abstract
Interface
virtual ~Shape() = default; // Virtual destructor safely handling inheritance
tree cleans
};

class Circle : public Shape { // Explicit public inheritance setup


public:
void draw() const override { // Polymorphism enforcement
std::cout << "Rendering Circle..." << std::endl;
}
};

C++ Programming Architecture 3

You might also like