C++编程求三角形、矩形、圆形的面积,要求使用抽象类。 总是有错,到底怎么回事呀,帮帮忙

#include<iostream.h>
#include<math.h>
const double PI=3.14159265;
class Shape
{
public:
virtual void Area()=0;
};
class Triangle:public Shape
{
public:
Triangle(double l,double m,double n)
{
a=l;
b=m;
c=n;
// double s=1.0/2*(a+b+c);
//double area=sqrt(s*(s-a)*(s-b)*(s-c))
}
double Area()
{
double s=1.0/2*(a+b+c);
double area=sqrt(s*(s-a)*(s-b)*(s-c));
return area;
private:
double a,b,c;
};
class Retangle:public Shape
{
public:
Retangle(double k,double l)
{ w=k; h=l;}
double Area()
{ return w*h;}
private:
double w,h;
};
class Circle:public Shape
{
public:
Circle(double k)
{ r=k; }
double Area()
{ return PI*r*r;}
private:
double r;
};
void fun(Shape &p)
{
cout<<"Area="<<p.Area()<<endl;
}
void main()
{
Tringle t(1,2,3);
Rectangle r(3.5);
Circle c(5);
fun(t);
fun(r);
fun(c);
}
//编程求三角形、矩形、圆形的面积,要求使用抽象类。
哦,抱歉呀!

--------------------Configuration: 01 - Win32 Debug--------------------
Compiling...
01.cpp
E:\CZY\8B\01.cpp(21) : error C2555: 'Triangle::Area' : overriding virtual function differs from 'Shape::Area' only by return type or calling convention
E:\CZY\8B\01.cpp(5) : see declaration of 'Shape'
E:\CZY\8B\01.cpp(34) : error C2555: 'Triangle::Retangle::Area' : overriding virtual function differs from 'Shape::Area' only by return type or calling convention
E:\CZY\8B\01.cpp(5) : see declaration of 'Shape'
E:\CZY\8B\01.cpp(44) : error C2555: 'Triangle::Circle::Area' : overriding virtual function differs from 'Shape::Area' only by return type or calling convention
E:\CZY\8B\01.cpp(5) : see declaration of 'Shape'
E:\CZY\8B\01.cpp(63) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

01.obj - 4 error(s), 0 warning(s)

第1个回答  2010-12-22
#include<iostream.h>
#include<math.h>
const double PI=3.14159265;
class Shape
{
public:
virtual double Area()=0;
};
class Triangle:public Shape
{
public:
Triangle(double l,double m,double n)
{
a=l;
b=m;
c=n;
// double s=1.0/2*(a+b+c);
//double area=sqrt(s*(s-a)*(s-b)*(s-c))
}
double Area()
{
double s=1.0/2*(a+b+c);
double area=sqrt(s*(s-a)*(s-b)*(s-c));
return area;
}
private:
double a,b,c;
};

class Retangle:public Shape
{
public:
Retangle(double k,double l)
{ w=k; h=l;}
double Area()
{ return w*h;}
private:
double w,h;
};
class Circle:public Shape
{
public:
Circle(double k)
{ r=k; }
double Area()
{ return PI*r*r;}
private:
double r;
};
void fun(Shape &p)
{
cout<<"Area="<<p.Area()<<endl;
}
void main()
{
Triangle t(1,2,3);//两个类的名字都写错了
Retangle r(3.5,3.1);//此处缺少了一个参数,你没有给默认值
Circle c(5);
fun(t);
fun(r);
fun(c);
}
第2个回答  2010-12-23
#include<iostream.h>
#include<math.h>
const double PI=3.14159265;
class Shape
{
public:
virtual double Area()=0;
};
class Triangle:public Shape
{
public:
Triangle(double l,double m,double n)
{
a=l;
b=m;
c=n;
// double s=1.0/2*(a+b+c);
//double area=sqrt(s*(s-a)*(s-b)*(s-c))
}
double Area()
{
double s=1.0/2*(a+b+c);
double area=sqrt(s*(s-a)*(s-b)*(s-c));
return area;
}////////////////////////////////////////落了右括号 }
private:
double a,b,c;
};
class Retangle:public Shape
{
public:
Retangle(double k,double l)
{ w=k; h=l;}
double Area()
{ return w*h;}
private:
double w,h;
};
class Circle:public Shape
{
public:
Circle(double k)
{ r=k; }
double Area()
{ return PI*r*r;}
private:
double r;
};
void fun(Shape &p)
{
cout<<"Area="<<p.Area()<<endl;
}
void main()
{
Triangle t(1,2,3);////////////////////Triangle类名写错了
Retangle r(3,5);////////(3.5)改成(3,5)
Circle c(5);
fun(t);
fun(r);
fun(c);
}本回答被提问者采纳
第3个回答  2010-12-22
出错信息呢?本回答被网友采纳

...圆形的面积,要求使用抽象类。 总是有错,到底怎么回事呀,帮帮忙...
Triangle t(1,2,3);\/\/两个类的名字都写错了 Retangle r(3.5,3.1);\/\/此处缺少了一个参数,你没有给默认值 Circle c(5);fun(t);fun(r);fun(c);}

C++知识:定义一个抽象类shape应以计算面积,
cout<<"矩形面积:"<Area()<<endl;pShape = &circle; \/\/抽象基类指针指向圆形 cout<<"圆形面积:"<Area()<<endl;pShape = &trapezium; \/\/抽象基类指针指向梯形 cout<<"梯形面积:"<Area()<<endl;}

什么时候用接口(interface),接口是用来做什么的
比如:如果我们进行一个图形编辑软件的 开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是 一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。 在面向 对...

抽象类和接口的区别是什么?
一、表示内容不同 1、抽象类:抽象类表示该类中可能已经有一些方法的具体定义。2、接口:接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。二、性质不同 1、抽象类:抽象类是对象的抽象。2、接口:接口是一种行为规范。三、成员变量不同 1、抽象类:抽象类中的成...

总是会跳到接口中的函数,有没有办法跳到子类实际方
1)抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。2)允许(但不要求)抽象类包含抽象成员。3)抽象类不能被密封。4、与...

JAVA中文是什么意思
JAVA中文意思是:计算机编程语言。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。任职于...

相似回答