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