实验内容
(1) 建立一个三角形类
① 使用带默认形参值(三条边长均为1)的构造函数,分别使用默认值和自定义值构造两个对象,并计算两个三角形的面积。
②利用带参数的构造函数使用建立动态对象的方法建立两个对象,计算并输出面积后,删除两个对象。
③利用拷贝构造函数实现对象间的赋值。
实现思路
1、操作步骤:
(1)Tri类的声明:
class Tri
{ //类的主体
private://静态属性==》类的数据成员
float a; //边长1
float b; //边长2
float c; //边长3
float s; //中间值
public://动态功能==》类的函数成员
Tri(float a1,float b1,float c1); //带默认值的构造函数
Tri(const Tri & T); //拷贝构造函数
float area( ); //面积计算
};
(2)三角形类动态功能实现
(a)带默认值的构造函数
Tri::Tri(float a1=1,float b1=1,float c1=1)
{
a=a1;
b=b1;
c=c1;
cout<<"三角形三个边:";
cout<<"a="<<a<<" "<<"b="<<b<<" "<<"c="<<c<<endl;
}
(b)拷贝构造函数
Tri::Tri(const Tri & tri)
{
a=tri.a;
b=tri.b;
c=tri.c;
cout<<"拷贝构造函数的三角形三个边:";
cout<<"a="<<tri.a<<" "<<"b="<<tri.b<<" "<<"c="<<tri.c<<endl;
}
(c)面积计算
float Tri::area()
{
if(a+b>c && a+c>b && b+c>a)
{
s=(a+b+c)/2;
return (sqrt(s*(s-a)*(s-b)*(s-c)));
}
else
{
cout<<"提示:给出的三角形三条边不符合三角形三边长度规则"<<endl;
return -1;
}
}
(3)主函数
int main()
{
Tri tri1;
cout<<"三角形面积为:area1="<<tri1.area()<<endl;
cout<<endl;
Tri tri2(2,3,4);
cout<<"三角形面积为:area2="<<tri2.area()<<endl;
cout<<endl;
Tri * tri3=new Tri(6,6,6);
cout<<"三角形面积为:area3="<<tri3->area()<<endl;
delete tri3;
cout<<endl;
Tri * tri4;
tri4=new Tri(10,10,25);
cout<<"三角形面积为:area4="<<tri4->area()<<endl;
delete tri4;
cout<<endl;
Tri tri5(tri2);
cout<<"使用拷贝构造函数调用输出的三角形面积为:area5="<<tri5.area()<<endl;
return 0;
}
2、整段代码:
Tri.h文件
#include <iostream>
#include <math.h>
using namespace std;
class Tri
{
private:
float a;
float b;
float c;
float s;
public:
Tri(float a1,float b1,float c1);
Tri(const Tri & T);
float area();
};
Tri::Tri(float a1=1,float b1=1,float c1=1)
{
a=a1;
b=b1;
c=c1;
cout<<"三角形三个边:";
cout<<"a="<<a<<" "<<"b="<<b<<" "<<"c="<<c<<endl;
}
Tri::Tri(const Tri & tri)
{
a=tri.a;
b=tri.b;
c=tri.c;
cout<<"拷贝构造函数的三角形三个边:";
cout<<"a="<<tri.a<<" "<<"b="<<tri.b<<" "<<"c="<<tri.c<<endl;
}
float Tri::area()
{
if(a+b>c && a+c>b && b+c>a)
{
s=(a+b+c)/2;
return (sqrt(s*(s-a)*(s-b)*(s-c)));
}
else
{
cout<<"提示:给出的三角形三条边不符合三角形三边长度规则"<<endl;
return -1;
}
}
T ri_main.cpp文件
#include <iostream>
#include "Tri.h"
using namespace std;
int main()
{
Tri tri1;
cout<<"三角形面积为:area1="<<tri1.area()<<endl;
cout<<endl;
Tri tri2(2,3,4);
cout<<"三角形面积为:area2="<<tri2.area()<<endl;
cout<<endl;
Tri * tri3=new Tri(6,6,6);
cout<<"三角形面积为:area3="<<tri3->area()<<endl;
delete tri3;
cout<<endl;
Tri * tri4;
tri4=new Tri(10,10,25);
cout<<"三角形面积为:area4="<<tri4->area()<<endl;
delete tri4;
cout<<endl;
Tri tri5(tri2);
cout<<"使用拷贝构造函数调用输出的三角形面积为:area5="<<tri5.area()<<endl;
return 0;
}