用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

c++ 实现纯虚函数

2012-11-26 作者: 程序猿style举报

[c++]代码库

#include <iostream>
using namespace std;
 
class Shape {
public:
    Shape() {
    }
    virtual ~Shape() {
    }
    virtual double GetArea() = 0;
    virtual double GetPerim()= 0;
    virtual void Draw() = 0;
private:
};
 
void Shape::Draw() {
    cout << "Abstract drawing mechanism!\n";
}
 
class Circle: public Shape {
public:
    Circle(int radius) :
            itsRadius(radius) {
    }
    virtual ~Circle() {
    }
    double GetArea() {
        return 3.14 * itsRadius * itsRadius;
    }
    double GetPerim() {
        return 2 * 3.14 * itsRadius;
    }
    void Draw();
private:
    int itsRadius;
    int itsCircumference;
};
 
void Circle::Draw() {
    cout << "Circle drawing routine here!\n";
    Shape::Draw();
}
 
class Rectangle: public Shape {
public:
    Rectangle(int len, int width) :
            itsLength(len), itsWidth(width) {
    }
    virtual ~Rectangle() {
    }
    double GetArea() {
        return itsLength * itsWidth;
    }
    double GetPerim() {
        return 2 * itsLength + 2 * itsWidth;
    }
    virtual int GetLength() {
        return itsLength;
    }
    virtual int GetWidth() {
        return itsWidth;
    }
    void Draw();
private:
    int itsWidth;
    int itsLength;
};
 
void Rectangle::Draw() {
    for (int i = 0; i < itsLength; i++) {
        for (int j = 0; j < itsWidth; j++)
            cout << "x ";
 
        cout << "\n";
    }
    Shape::Draw();
}
 
class Square: public Rectangle {
public:
    Square(int len);
    Square(int len, int width);
    virtual ~Square() {
    }
    double GetPerim() {
        return 4 * GetLength();
    }
};
 
Square::Square(int len) :
        Rectangle(len, len) {
}
 
Square::Square(int len, int width) :
        Rectangle(len, width)
 
{
    if (GetLength() != GetWidth())
        cout << "Error, not a square... a Rectangle??\n";
}
 
int main() {
    int choice;
    bool fQuit = false;
    Shape * sp;
 
    while (fQuit == false) {
        cout << "(1)Circle (2)Rectangle (3)Square (0)Quit: ";
        cin >> choice;
 
        switch (choice) {
        case 1:
            sp = new Circle(5);
            break;
        case 2:
            sp = new Rectangle(4, 6);
            break;
        case 3:
            sp = new Square(5);
            break;
        default:
            fQuit = true;
            break;
        }
        if (fQuit == false) {
            sp->Draw();
            delete sp;
            cout << endl;
        }
    }
    return 0;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...