|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
定义抽象类Geometry,含有计算几何图形周长的纯虚函数double Circumfer();含有计算面积的纯虚函数double Area();在此基础上公有的派生出矩形类Rectangle,和圆类Circle,并且分别给出计算周长函数Circumf()和计算面积函数Area()的定义。最后通过函数fun()分别输出面积和周长。
- #include<iostream>
- using namespace std;
- const double pi = 3.14;
- class Geometry{
- public:
- Geometry();
- virtual double Circumfer() const=0; //纯虚函数
- virtual double Area() const=0;
- };
- class Rectangle:public Geometry{
- public:
- Rectangle(double A, double B) {
- a = A;
- b = B;
- }
- double Circumf() const;
- double Area() const;
- void fun();
- private:
- double a, b;
- };
- double Rectangle::Circumf() const {
- double l,a,b;
- l = 2*a+2*b;
- }
- double Rectangle::Area() const {
- double s,a,b;
- s = a * b;
- }
- class Circle:public Geometry {
- public:
- Circle(int R) {
- r = R;
- }
- double Circumf() const;
- double Area() const;
- void fun();
- private:
- int r;
- };
- double Circle::Circumf() const {
- double l,r;
- l = 2 *pi*r;
- }
- double Circle::Area() const {
- double s,r;
- s = pi*r*r;
- }
- void fun(const Geometry * ptr)
- {
- ptr->Circumfer();
- ptr->Area();
- }
- int main()
- {
- Rectangle x1(2, 3);
- Rectangle* p1;
-
- cout << "Rectangle:" << endl;
- fun(p1);
- Circle y1(5);
- Circle* p2;
- cout << "Circle:" << endl;
- fun(p2);
- return 0;
- }
复制代码
错误如下:由于知识有限,不太会改。。。
错误(活动) E0322 不允许使用抽象类类型 "Rectangle" 的对象:
错误(活动) E0322 不允许使用抽象类类型 "Circle" 的对象:
错误 C2259 “Rectangle”: 无法实例化抽象类
错误 C2259 “Rectangle”: 无法实例化抽象类
错误 C2259 “Circle”: 无法实例化抽象类
错误 C2259 “Circle”: 无法实例化抽象类
- #include <iostream>
- using namespace std;
- const double pi = 3.14;
- class Geometry {
- public:
- Geometry() {}
- virtual double Circumfer() const = 0;
- virtual double Area() const = 0;
- };
- class Rectangle: public Geometry {
- public:
- Rectangle(double A, double B) {
- a = A;
- b = B;
- }
- double Circumfer() const;
- double Area() const;
- private:
- double a, b;
- };
- double Rectangle::Circumfer() const {
- return 2 * a + 2 * b;
- }
- double Rectangle::Area() const {
- return a * b;
- }
- class Circle: public Geometry {
- public:
- Circle(int R) {
- r = R;
- }
- double Circumfer() const;
- double Area() const;
- private:
- int r;
- };
- double Circle::Circumfer() const {
- return 2 * pi * r;
- }
- double Circle::Area() const {
- return pi * r * r;
- }
- void fun(const Geometry *ptr) {
- std::cout << ptr->Circumfer() << " " << ptr->Area() << std::endl;
- }
- int main() {
- Rectangle x1(2, 3);
- cout << "Rectangle:" << endl;
- fun(&x1);
- Circle y1(5);
- cout << "Circle:" << endl;
- fun(&y1);
- return 0;
- }
复制代码
|
|