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

在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;
}

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

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

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值