Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ 抽象类

作者:嗜血苍狼   发布日期:2026-07-24   浏览:20

#include <iostream>
using namespace std;

// 定义一个抽象类 Shape
class Shape {
public:
    // 纯虚函数,使得 Shape 成为抽象类
    virtual void draw() = 0;

    // 虚析构函数,确保派生类的析构函数被正确调用
    virtual ~Shape() {}
};

// 派生类 Circle,实现抽象类 Shape 的纯虚函数
class Circle : public Shape {
public:
    void draw() override {
        cout << "Drawing Circle" << endl;
    }
};

// 派生类 Rectangle,实现抽象类 Shape 的纯虚函数
class Rectangle : public Shape {
public:
    void draw() override {
        cout << "Drawing Rectangle" << endl;
    }
};

int main() {
    // 不能创建抽象类的对象
    // Shape shape; // 错误:无法实例化抽象类

    // 创建派生类对象,并通过基类指针调用
    Shape* shape1 = new Circle();
    Shape* shape2 = new Rectangle();

    shape1->draw();  // 输出: Drawing Circle
    shape2->draw();  // 输出: Drawing Rectangle

    // 释放内存
    delete shape1;
    delete shape2;

    return 0;
}

解释说明:

  1. 抽象类Shape 是一个抽象类,因为它包含了一个纯虚函数 draw()。纯虚函数没有具体的实现,只提供接口定义。
  2. 派生类CircleRectangle 继承自 Shape,并实现了 draw() 函数。
  3. 虚析构函数Shape 类中定义了虚析构函数 virtual ~Shape() {},确保派生类的析构函数在删除对象时被正确调用。
  4. 多态性:通过基类指针 Shape* 可以调用派生类的 draw() 方法,体现了多态性。
  5. 不能实例化抽象类:不能直接创建 Shape 类的对象,因为它是抽象类。

上一篇:c++ transform

下一篇:c++反转字符串

大家都在看

c++闭包

c++向上取整的代码

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++怎么输入字符串

c++字符串切片

c++ functional

嵌入式c++

c++框架代码

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站