Classes with class keyword and Access Controls
The class keyword is similar to the struct keyword but by default it sets methods and attributes as private. In this snippet I explore the public and private attributes and methods.
For demonstration, this code snippet creates a simple class that calculates the Area and Circumference of a circle given a user provided radius. The pi value is private and can be initialized by the constructor. The radius is dynamic
#include <cstdio>
class ComputeCircularValues {
float approx_pi = 3.14;
public:
// Constructor
ComputeCircularValues(float pi_value){
approx_pi = pi_value;
}
float Area(int radius) {
return approx_pi * radius * radius;
}
float Circumference(int radius){
return 2 * approx_pi * radius;
}
float reset_pi_value(float pi_value){
float approx_pi = pi_value;
return approx_pi;
}
float get_approx_pi(){
return approx_pi;
}
};
int main() {
// Using a constructor to assign private varibale pi for this instance.
ComputeCircularValues compute_object(3.14);
printf("The Area of a circle using Pi: %f and Radius %f is %f \n",
compute_object.get_approx_pi(), 5.0 , compute_object.Area(5));
ComputeCircularValues compute_object_2(3.1);
printf("The Area of a circle using Pi: %f and Radius %f is %f \n" ,
compute_object_2.get_approx_pi(), 5.0, compute_object_2.Area(5));
}
The code above will use a constructor to define the approx_pi value from the user in every instance of the ComputeCircularValues class
Let's compile and execute the code.
$ g++ class_with_access_control.cpp -std=c++17 -o class_with_access_control
$ ./class_with_access_control
The Area of a circle using Pi: 3.140000 and Radius 5.000000 is 78.500000
The Area of a circle using Pi: 3.100000 and Radius 5.000000 is 77.500000