当前位置:   article > 正文

不能实例化抽象类&抽象类不能实例化_xmemory无法实例化抽象类

xmemory无法实例化抽象类

在c++和java中我们会定义很多类,但是我们会遇到在对类进行new实例化时会遇到“不能实例化抽象类”或者“抽象类不能实例化”,针对这个问题要首先理解两个内容“抽象类”和“实例化”

如果只是想单纯的理解,那么意思就是你画了一个有四条边的图形你说是矩形

但是这是不可以的,为什么?因为矩形还有一个条件就是要四个内角是直角

其中画有四条边的图形就是抽象类,矩形就是实例化

如果理解了含义但是不懂代码中的定义,那么那么就百度百度定义!定义真的很重要!

抽象类定义:

含有纯虚函数的类称为抽象类

实例化的定义:

用类创建对象的过程

纯虚函数的定义:

一个只有函数名、参数和返回值类型,没有函数体的函数成为纯虚函数。

这一层懂了当然最好

如果不懂再来看看代码test 中shape未编译通过

  1. #include <iostream>
  2. using namespace std;
  3. //定义一个形状抽象类(基类)
  4. class Shape {
  5.     //保护继承 ,其派生类也会继承保护成员
  6.   protected:
  7.     double x;
  8.     double y;
  9.     //公有继承
  10.   public:
  11.     void set(double i, double j) {
  12.         x = i;
  13.         y = j;
  14.     }
  15.     //纯虚函数
  16.     virtual void area() 0;
  17. };
  18. //定义矩形类并定义其面积为长*宽(派生类)
  19. class Rectangle : public Shape {
  20.     void area() { cout << x * y << endl; }
  21. };
  22. int main() {
  23.     Rectangle rec; //定义一个矩形对象(实例化)
  24.     // Shape rec;
  25.     Shape *p = &rec; //定义一个抽象类的指针,并使它指向矩形对象
  26.     p->set(24);    //调用
  27.     p->area();
  28.     return 0;
  29. }

详细定义矩形,可以实例化并正常输出

未定义,提示含有纯虚函数无法抽象实例化对象

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/904349
推荐阅读
相关标签
  

闽ICP备14008679号