1、定义Circle类和Square类,Circle类的成员变量为半径和面积,Square类的成员变量为边长和面积。
2、生成Circle类对象和Square类对象,并让Square类对象内接Circle类对象。
3、给定Square类对象的边长,调用各自的计算面积的成员函数,分别计算各自的面积。
1、定义Circle类和Square类,Circle类的成员变量为半径和面积,Square类的成员变量为边长和面积。
2、生成Circle类对象和Square类对象,并让Square类对象内接Circle类对象。
3、给定Square类对象的边长,调用各自的计算面积的成员函数,分别计算各自的面积。
#include <iostream>
#include <math.h>
using namespace std;
#define PI 3.14
#define SQUARE_OUTSIDE 0 //1://外方内圆 0:外圆内方
class Square
{
public:
Square(double l):mL(l){mArea = mL * mL;}
double getArea()
{
return mArea;
}
double getLength()
{
return mL;
}
private:
double mL;
double mArea;
};
class Circle
{
public:
#if (SQUARE_OUTSIDE == 1)
Circle(Square *square):mR(square->getLength()/2.0){mArea = mR * mR * PI;}
#else
Circle(Square *square):mR(sqrt((square->getLength()*square->getLength()/2.0))){mArea = mR * mR * PI;}
#endif
double getArea()
{
return mArea;
}
//这是另外一种算法,这种方法构造函数不需要带参数
double getArea(Square *square)
{
#if (SQUARE_OUTSIDE == 1)
mArea = square->getArea() * (PI/4);
#else
mArea = square->getArea()/2 * PI;
#endif
return mArea;
}
private:
double mR;
double mArea;
};
int main()
{
double a = 1.414213;//a=根号2 r=1;
#if (SQUARE_OUTSIDE == 1)
a = 12.0; //a=12 r=6;
#endif
Square square(a);
std::cout << "Square Area: " << square.getArea() << std::endl;
Circle circle(&square);
std::cout << "Circle Area1: " << circle.getArea() << std::endl;
std::cout << "Circle Area2: " <<circle.getArea(&square) << std::endl;
return 0;
}