c++类的组合与继承
题目:把定义平面直角坐标系上的一个点的类point作为基类,派生出描述一条直线的类line,再派生出一个矩形类rect。要求成员函数能求出两点间的距离、矩形的周长和面积等...
题目:
把定义平面直角坐标系上的一个点的类point作为基类,派生出描述一条直线的类line,再派生出一个矩形类rect。要求成员函数能求出两点间的距离、矩形的周长和面积等。设计一个测试程序,并构造完整的程序。
我的代码是这样的,还没有完成,而且编译有很多错误:
#include<iostream.h>
#include<math.h>
class point
{
int x;
int y;
public:
point(int a,int b)
{
x=a;
y=b;
cout<<"基类 point 构造函数被调用"<<endl;
}
};
class line:public point
{
point n;
point m;
public:
line(int a,int b,int c,int d):n(a,b),m(c,d)
{
cout<<"派生类 line 构造函数被调用"<<endl;
}
int distance(int a,int b,int c,int d)
{
int s;
s=sqrt((a.x-b.x)*(a.x-b.x)+(c.x-d.x)+(c.y-d.y));
cout<<"线段长为:"<<s<<endl;
return s;
}
};
class rect:public line
{
line q;
line w;
public:
rect(int a,int b,int c,int d,int e,int d,int g,int h):q(a,b,c,d),w(e,f,g,h)
{
cout<<"派生类 rect 构造函数被调用"<,endl;
}
int perimeter(int a,int b,int c,int d,int e,int d,int g,int h)
{
int sum;
sum=q.distance*2+w.distance*2;
cout<<"周长为:"<<sum<<endl;
return sum;
}
int acreage(int a,int b,int c,int d,int e,int d,int g,int h)
{
int product;
product=q.distance*w.distance;
cout<<"面积为:"<<product<<endl;
return product;
}
};
int main()
{
rect a1(0,0,0,1,1,1,1,0);
}
而且编译后还不提示错误的位置:
希望明白的人能给我讲解一下,非常感谢。 展开
把定义平面直角坐标系上的一个点的类point作为基类,派生出描述一条直线的类line,再派生出一个矩形类rect。要求成员函数能求出两点间的距离、矩形的周长和面积等。设计一个测试程序,并构造完整的程序。
我的代码是这样的,还没有完成,而且编译有很多错误:
#include<iostream.h>
#include<math.h>
class point
{
int x;
int y;
public:
point(int a,int b)
{
x=a;
y=b;
cout<<"基类 point 构造函数被调用"<<endl;
}
};
class line:public point
{
point n;
point m;
public:
line(int a,int b,int c,int d):n(a,b),m(c,d)
{
cout<<"派生类 line 构造函数被调用"<<endl;
}
int distance(int a,int b,int c,int d)
{
int s;
s=sqrt((a.x-b.x)*(a.x-b.x)+(c.x-d.x)+(c.y-d.y));
cout<<"线段长为:"<<s<<endl;
return s;
}
};
class rect:public line
{
line q;
line w;
public:
rect(int a,int b,int c,int d,int e,int d,int g,int h):q(a,b,c,d),w(e,f,g,h)
{
cout<<"派生类 rect 构造函数被调用"<,endl;
}
int perimeter(int a,int b,int c,int d,int e,int d,int g,int h)
{
int sum;
sum=q.distance*2+w.distance*2;
cout<<"周长为:"<<sum<<endl;
return sum;
}
int acreage(int a,int b,int c,int d,int e,int d,int g,int h)
{
int product;
product=q.distance*w.distance;
cout<<"面积为:"<<product<<endl;
return product;
}
};
int main()
{
rect a1(0,0,0,1,1,1,1,0);
}
而且编译后还不提示错误的位置:
希望明白的人能给我讲解一下,非常感谢。 展开
1个回答
展开全部
#include<iostream>
#include<math.h>
using namespace std;
class point
{
int x;
int y;
public:
point(int a,int b)
{
x=a;
y=b;
cout<<"基类 point 构造函数被调用"<<endl;
}
point()
{
}
};
class line:public point
{
point n;
point m;
public:
line(int a,int b,int c,int d):n(a,b),m(c,d)
{
cout<<"派生类 line 构造函数被调用"<<endl;
}
line()
{
}
int distance(int a,int b,int c,int d)
{
double s;
s=sqrt(1.0*(a-b)*(a-b)+(c-d)*(c-d));
cout<<"线段长为:"<<s<<endl;
return s;
}
};
class rect:public line
{
line q;
line w;
public:
rect(int a,int b,int c,int d,int e,int f,int g,int h):q(a,b,c,d),w(e,f,g,h)
{
cout<<"派生类 rect 构造函数被调用"<<endl;
}
int perimeter(int a,int b,int c,int d,int e,int f,int g,int h)
{
int sum;
sum=q.distance(a,b,c,d)*2+w.distance(e,f,g,h)*2;
cout<<"周长为:"<<sum<<endl;
return sum;
}
int acreage(int a,int b,int c,int d,int e,int f,int g,int h)
{
int product;
product=q.distance(a,b,c,d)*w.distance(e,f,g,h);
cout<<"面积为:"<<product<<endl;
return product;
}
};
int main()
{
rect a1(0,0,0,1,1,1,1,0);
}
只是把你的错误都改掉了
#include<math.h>
using namespace std;
class point
{
int x;
int y;
public:
point(int a,int b)
{
x=a;
y=b;
cout<<"基类 point 构造函数被调用"<<endl;
}
point()
{
}
};
class line:public point
{
point n;
point m;
public:
line(int a,int b,int c,int d):n(a,b),m(c,d)
{
cout<<"派生类 line 构造函数被调用"<<endl;
}
line()
{
}
int distance(int a,int b,int c,int d)
{
double s;
s=sqrt(1.0*(a-b)*(a-b)+(c-d)*(c-d));
cout<<"线段长为:"<<s<<endl;
return s;
}
};
class rect:public line
{
line q;
line w;
public:
rect(int a,int b,int c,int d,int e,int f,int g,int h):q(a,b,c,d),w(e,f,g,h)
{
cout<<"派生类 rect 构造函数被调用"<<endl;
}
int perimeter(int a,int b,int c,int d,int e,int f,int g,int h)
{
int sum;
sum=q.distance(a,b,c,d)*2+w.distance(e,f,g,h)*2;
cout<<"周长为:"<<sum<<endl;
return sum;
}
int acreage(int a,int b,int c,int d,int e,int f,int g,int h)
{
int product;
product=q.distance(a,b,c,d)*w.distance(e,f,g,h);
cout<<"面积为:"<<product<<endl;
return product;
}
};
int main()
{
rect a1(0,0,0,1,1,1,1,0);
}
只是把你的错误都改掉了
追问
谢谢了,我先试试可以不
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询