Compare Shapes Friend Function
Create two classes Circle and Square:
Circleshould have a private memberfloat radius.Squareshould have a private memberfloat side.
Create a friend function compare_area() that takes a Circle and a Square object as parameters and compares their areas by accessing their private members.
Create objects of both classes, set their dimensions using constructors, and then call compare_area() to determine which shape has a larger area.
// Announce the larger shape inside the function
void compare_area(Circle& circle, Square& square)
Hint
There should be a friend function declaration in both classes so that it can access private members from both.
Answer
#include <iostream>
#include <cmath>
class Circle;
class Square;
class Circle {
friend void compare_area(Circle& circle, Square& square); // Friend function declaration
private:
float radius;
public:
Circle(float r) : radius(r) {}
};
class Square {
friend void compare_area(Circle& circle, Square& square); // Friend function declaration
private:
float side;
public:
Square(float s) : side(s) {}
};
// Friend function definition
void compare_area(Circle& circle, Square& square) {
float circle_area = M_PI * std::pow(circle.radius, 2);
float square_area = std::pow(square.side, 2);
if (circle_area > square_area) {
std::cout << "Circle has a larger area." << std::endl;
} else if (square_area > circle_area) {
std::cout << "Square has a larger area." << std::endl;
} else {
std::cout << "Both shapes have the same area." << std::endl;
}
}
int main() {
Circle circle(3.0);
Square square(4.0);
compare_area(circle, square);
return 0;
}