用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...