Implementing Square Class with Pointers, Dynamic Allocation, and Static Members

Cretaing and Using Square Objects

Define a Square class with private sideLength and public methods:

#include <iostream>
using namespace std;

class Square {
private:
    double sideLength;
    static int objectCount;

public:
    Square() : sideLength(1.0) { objectCount++; }
    Square(double len) : sideLength(len) { objectCount++; }
    ~Square() { objectCount--; }

    void setSide(double len) { sideLength = len; }
    double getArea() const { return sideLength * sideLength; }
    double getSide() const { return sideLength; }
    static int count() { return objectCount; }
};

int Square::objectCount = 0;

Task 1: Pointer to Object

Create a square, use a pointer to set its side, and calculate area:

int main() {
    Square sq;
    Square* ptr = &sq;
    
    double input;
    cin >> input;
    ptr->setSide(input);
    
    cout << "Area: " << ptr->getArea() << endl;
    return 0;
}

Test Data: Input 12 → Output Area: 144


Task 2: Dynamic Object Allocation

Create a square dynamically using new and delete:

int main() {
    Square* dynamicSq = new Square;
    
    double input;
    cin >> input;
    dynamicSq->setSide(input);
    
    cout << "Area: " << dynamicSq->getArea() << endl;
    
    delete dynamicSq;
    return 0;
}

Test Data: Input 100 → Output Area: 100


Task 3: Dynamic Array of Objects

Create an array of squares dynamically, compute total area:

int main() {
    Square* arr = new Square[3];
    double totalArea = 0;
    
    for (int i = 0; i < 3; i++) {
        double input;
        cin >> input;
        arr[i].setSide(input);
        totalArea += arr[i].getArea();
    }
    
    cout << "Total area: " << totalArea << endl;
    delete[] arr;
    return 0;
}

Task 4: Static Member Tracking

Track objects using static objectCount:

int main() {
    Square* s1 = new Square;
    Square* s2 = new Square;
    Square* s3 = new Square;
    
    cout << "Objects: " << Square::count() << endl;
    
    delete s1;
    delete s2;
    cout << "Remaining: " << Square::count() << endl;
    
    delete s3;
    return 0;
}

Output:

Objects: 3
Remaining: 1

Tags: C++ Object-Oriented Programming pointers Dynamic Memory

Posted on Tue, 26 May 2026 16:30:59 +0000 by jayR