三角形类
(1)下面设计一个三角形类,请给出各成员函数的定义
- class Triangle
- {
- public:
- void setABC(double x, double y, double z);
- double perimeter();
- double area();
- private:
- double a,b,c;
- };
- int main()
- {
- Triangle tri1;
- tri1.setABC(4,5,6);
- cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
- return 0;
- }
-
- void Triangle::setABC(double x, double y, double z)
{
a=x,b=y,c=z;
return;
}
void Triangle::getABC(double *x, double *y, double *z)
{
*x=a,*y=b,*z=c;
return;
}
double Triangle::perimeter(void)
{
return a+b+c;
}
double Triangle::area(void)
{
double s;
s=0.5*(a+b+c);
return (sqrt(s*(s-a)*(s-b)*(s-c)));
}
(2)
在上面程序的基础上,重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。
- int main()
- {
- Triangle tri1;
- double x,y,z;
- cout<<"请输入三角形的三边:";
- cin>>x>>y>>z;
- tri1.setA(x);
- tri1.setB(y);
- tri1.setC(z);
- if(tri1.isTriangle())
- {
- cout<<"三条边为:"<<tri1.getA()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;
- cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
- }
- else
- cout<<"不能构成三角形"<<endl;
- return 0;
- }
(3)设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。需要的测试函数是:
- int main()
- {
- Triangle Tri(7,8,9);
- Tri.showMessage();
- return 0;
- }
(4)使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。需要的测试函数是:
- int main()
- {
- Triangle Tri1;
- Tri1.showMessage();
- Triangle Tri2(1.5);
- Tri2.showMessage();
- Triangle Tri3(1.5,1.5);
- Tri3.showMessage();
- Triangle Tri4(7,8,9);
- Tri4.showMessage();
- return 0;
- }
(5)使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象:
- int main()
- {
- Triangle Tri1(3,4,5);
- Tri1.showMessage();
- Triangle Tri2(Tri1);
- Tri2.showMessage();
- return 0;
- }