欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > qt 自定义抽象类简单举例

qt 自定义抽象类简单举例

2024/10/23 23:33:40 来源:https://blog.csdn.net/xie__jin__cheng/article/details/140263716  浏览:    关键词: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

Circle.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;
}

Rectangle.h

#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++代码。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com