# **📦 Booth: C++ (1983)**

* **Creator:** Bjarne Stroustrup (Bell Labs)  
* **Design Philosophy:** "C with Classes" — bring high-level object abstractions and type-safe encapsulation to systems-level code, adhering strictly to the *zero-overhead principle*: "What you don't use, you don't pay for."  
* **Key Innovations:** Classes, dynamic polymorphism (virtual functions), Resource Acquisition Is Initialization (RAII), function and operator overloading, templates (generic programming), and reference types.

## **🚀 Hello, World\!**

\#include \<iostream\>

int main() {  
    std::cout \<\< "Hello, World\!" \<\< std::endl;  
    return 0;  
}

## **🎨 Showpiece: Generic RAII Stack Vector**

This script showcases classic C++ techniques: static encapsulation, templates for generic type safety, and automatic resource cleanup via destructors (RAII).

Mathematically, dynamic sizing of sequential structures follows an amortized complexity:

![][image1]\#include \<iostream\>  
\#include \<stdexcept\>

template \<typename T\>  
class SimpleVector {  
private:  
    T\* data;  
    size\_t capacity;  
    size\_t length;

    void resize() {  
        capacity \= (capacity \== 0\) ? 1 : capacity \* 2;  
        T\* new\_data \= new T\[capacity\];  
        for (size\_t i \= 0; i \< length; \++i) {  
            new\_data\[i\] \= data\[i\];  
        }  
        delete\[\] data;  
        data \= new\_data;  
    }

public:  
    // Constructor  
    SimpleVector() : data(nullptr), capacity(0), length(0) {}

    // Destructor (RAII guarantees automatic cleanup)  
    \~SimpleVector() {  
        delete\[\] data;  
        std::cout \<\< "\[RAII\] Dynamic memory freed." \<\< std::endl;  
    }

    void push(const T& value) {  
        if (length \== capacity) {  
            resize();  
        }  
        data\[length++\] \= value;  
    }

    T get(size\_t index) const {  
        if (index \>= length) {  
            throw std::out\_of\_range("Index out of bounds");  
        }  
        return data\[index\];  
    }

    size\_t size() const {  
        return length;  
    }  
};

int main() {  
    {  
        SimpleVector\<int\> numbers;  
        numbers.push(10);  
        numbers.push(20);  
        numbers.push(30);

        std::cout \<\< "Vector Size: " \<\< numbers.size() \<\< std::endl;  
        std::cout \<\< "Element at Index 1: " \<\< numbers.get(1) \<\< std::endl;  
    } // Scope ends here \- Vector destructor is automatically invoked\!

    return 0;  
}  


[image1]: <data:image/png;base64,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>