I'm trying to improve on my basic C++ skills and create really nice, concise and clean code that is free from artifacts.
The program can add and subtract radius values from each circle, assign one circle to another and furthermore give the area.
Any tips on how this program can be improved, whether considering readability issue or anything else would be great.
// Basic circle exercise 23rd March
#include <cstdio>
#include <math.h>
using namespace std;
//==============================================================================
/* interface */
//==============================================================================
namespace corey
{
class Circle
{
public:
Circle(const int & r = 1.0);
~Circle();
const double & getRadius() const;
const double getArea() const;
Circle & operator = (const Circle &);
private:
double radius;
};
};
//==============================================================================
/* implementation */
//==============================================================================
/*I'd probably included using namespace corey if
i'd have bothered with seperate files*/
corey::Circle::Circle(const int & r) : radius(r){}
corey::Circle::~Circle(){}
const double & corey::Circle::getRadius() const
{
return radius;
}
const double corey::Circle::getArea() const
{
const double area = (M_PI * radius * radius);
return area;
}
corey::Circle operator + ( const corey::Circle & lhs, const corey::Circle & rhs)
{
return corey::Circle(lhs.getRadius() + rhs.getRadius());
}
corey::Circle operator - ( const corey::Circle & lhs, const corey::Circle & rhs)
{
return corey::Circle(lhs.getRadius() - rhs.getRadius());
}
corey::Circle & corey::Circle::operator = (const Circle & lhs)
{
if(&lhs != this)
{
radius = lhs.radius;
}
return (*this);
}
//==============================================================================
/* useage */
//==============================================================================
int main( int argc, char ** argv )
{
//this stuff is just some info printed out so not super important...
corey::Circle c1(2);
printf("Circle made with radius %lf & area %lf\n", c1.getRadius(), c1.getArea());
const corey::Circle c2(6);
printf("Circle made with radius %lf & area %lf\n", c2.getRadius(), c2.getArea());
corey::Circle c3;
c3 = c2 + c1;
printf("Circle made with radius %lf & area %lf\n", c3.getRadius(), c3.getArea());
c1 = c3;
printf("Circle made with radius %lf & area %lf\n", c1.getRadius(), c1.getArea());
return 0;
}
Circle
's ctor acceptint
as an argument (reference put aside)? Its radius is internallydouble
, it reports its radius asdouble
, even the argument's default value is 1.0 (which isdouble
), so why on Earthint
? \$\endgroup\$