注册 登录
编程论坛 C++教室

C++简单的问题

cwl168 发布于 2013-01-09 21:25, 571 次点击
#include <iostream>
#include <cmath>
using namespace std;


class Shape
{
public:
    virtual Shamename() const=0;
    virtual area() const=0;
};


class Circle:public Shape
{
public:
    Circle(double r):radius(r) {}
    virtual Shamename() {cout<<"Circle:"<<endl;}
    virtual double area(){return 3.1415926*radius*radius;}
protected:
    double radius;
};
class Rectangle:public Shape
{
public:
    Rectangle(double a,double b):length(a),with(b) {}
    virtual Shamename(){cout<<"Rectangle:"<<endl;}
    double area() {return length*with;}
protected:
    double length,with;
};
class Triangle:public Shape
{
public:
    Triangle(double a,double b,double c):bord1(a),bord2(b),bord3(c) {}
    virtual Shamename(){cout<<"Rectangle:"<<endl;}
    double area()
    {
        double s=(bord1+bord2+bord3)/2;
        return sqrt(s*(s-bord1)*(s-bord2)*(s-bord3));
    }
protected:
    double bord1,bord2,bord3;
};
void printArea(const Shape &s)
{
    cout<<s.Shamename()<<endl;
    cout<<s.area()<<endl;
}
void main()
{
      Circle c1(2);
      printArea(c1);
}
错在哪里啊
6 回复
#2
tsyking2013-01-09 22:39
子类重载也要加上const
#3
liqingqinger2013-01-09 22:52
亲 俺咋觉得一点都布简单啊
#4
smile康师傅2013-01-10 08:02
我们期末考试编程题的复杂版。。。。这都能见到
#5
rjsp2013-01-10 08:27
丢三落四的,语法不熟练是其中一个原因,但性格马虎才是主要的原因
程序代码:
#include <cmath>

class Shape
{
public:
    virtual const char* Shamename() const = 0;
    virtual double area() const = 0;
};

class Circle : public Shape
{
public:
    explicit Circle(double r) : radius(r) {}
    virtual const char* Shamename() const { return "Circle"; }
    virtual double area() const { return 3.1415926*radius*radius; }
protected:
    double radius;
};

class Rectangle : public Shape
{
public:
    Rectangle(double a,double b) : length(a),with(b) {}
    virtual const char* Shamename() const { return "Rectangle"; }
    virtual double area() const { return length*with; }
protected:
    double length,with;
};

class Triangle : public Shape
{
public:
    Triangle(double a,double b,double c):bord1(a),bord2(b),bord3(c) {}
    virtual const char* Shamename() const { return "Triangle"; }
    virtual double area() const
    {
        double s=(bord1+bord2+bord3)/2;
        return sqrt(s*(s-bord1)*(s-bord2)*(s-bord3));
    }
protected:
    double bord1,bord2,bord3;
};

#include <iostream>

void printArea( const Shape& s )
{
    std::cout << s.Shamename() << std::endl;
    std::cout << s.area() << std::endl;
}

using namespace std;

int main()
{
    Circle c1(2);
    printArea(c1);

    return 0;
}

#6
锋了2013-01-14 21:15
楼上似乎已经解决了,我就不看了,来混分的
#7
liu1378002013-01-15 14:40
5楼解决你问题了,过来混个分!!注意细节,还有就是书写格式,放别自己也方便他人查看!
1