qt 自定义抽象类简单举例

在Qt中自定义一个抽象类通常涉及定义一个基类,该类包含至少一个纯虚函数,从而使其成为抽象类。以下是一个简单的例子,展示了如何创建一个自定义的抽象类及其派生类。

首先,我们定义一个名为Shape的抽象类,它有一个纯虚函数area(),用于计算形状的面积。然后,我们创建两个派生类CircleRectangle,它们分别实现了area()函数来计算圆和矩形的面积。

Shape.h

#ifndef SHAPE_H 
#define SHAPE_H 


class Shape { 
    public: 
    virtual ~Shape() {} 
    virtual double area() const = 0; // 纯虚函数,使得Shape成为抽象类 
}; 


#endif // SHAPE_H
#ifndef CIRCLE_H 
#define CIRCLE_H 


#include "Shape.h" 


class Circle : public Shape { 
public: 
    Circle(double radius); 
    double area() const override; // 重写Shape类中的纯虚函数 
    private: 
    double radius; 
}; 


#endif // CIRCLE_H

Circle.cpp

#include "Circle.h" 
#include <cmath> 


Circle::Circle(double radius) : radius(radius) {} 


double Circle::area() const { 
    return M_PI * radius * radius; 
}
#ifndef RECTANGLE_H 
#define RECTANGLE_H 


#include "Shape.h" 


class Rectangle : public Shape { 
public: 
    Rectangle(double width, double height); 
    double area() const override; // 重写Shape类中的纯虚函数 
    private: 
    double width, height; 
}; 


#endif // RECTANGLE_H

Rectangle.cpp

#include "Rectangle.h" 


Rectangle::Rectangle(double width, double height) : width(width), height(height) {} 


double Rectangle::area() const { 
    return width * height; 
}

在这个例子中,Shape是一个抽象类,因为它有一个纯虚函数area()CircleRectangle类都继承自Shape,并且都实现了area()函数,因此它们可以被实例化。你可以在主函数中创建CircleRectangle的对象,并调用它们的area()函数来计算面积。

main.cpp

#include <iostream> 
#include "Circle.h" 
#include "Rectangle.h" 


int main() { 
    Circle circle(5.0); // 创建一个半径为5的圆 
    std::cout << "Circle area: " << circle.area() << std::endl; // 输出圆的面积 


    Rectangle rectangle(4.0, 6.0); // 创建一个4x6的矩形 
    std::cout << "Rectangle area: " << rectangle.area() << std::endl; // 输出矩形的面积 


    return 0; 
}

这个简单的例子展示了如何在Qt(或任何C++环境)中定义和使用自定义的抽象类。请注意,虽然这个例子是在Qt环境中描述的,但它实际上并不依赖于Qt库,而是纯粹的C++代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值