不能实例化抽象类&抽象类不能实例化

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

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

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

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

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

抽象类定义:

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

实例化的定义:

用类创建对象的过程

纯虚函数的定义:

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

这一层懂了当然最好

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

#include <iostream>
using namespace std;
//定义一个形状抽象类(基类)
class Shape {
    //保护继承 ,其派生类也会继承保护成员
  protected:
    double x;
    double y;
    //公有继承
  public:
    void set(double i, double j) {
        x = i;
        y = j;
    }
    //纯虚函数
    virtual void area() = 0;
};
//定义矩形类并定义其面积为长*宽(派生类)
class Rectangle : public Shape {
    void area() { cout << x * y << endl; }
};

int main() {
    Rectangle rec; //定义一个矩形对象(实例化)
    // Shape rec;
    Shape *p = &rec; //定义一个抽象类的指针,并使它指向矩形对象
    p->set(2, 4);    //调用
    p->area();
    return 0;
}

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

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

  • 1
    点赞
  • 9
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

daisy.skye

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值