C++异常之我所见

C++异常所带来的问题当我们在代码中写下一行 throw 语句时,我们就此埋下了一个祸根,从此以后,在该函数调用链中,必须至少有一个调用者需要提供相应的异常捕获,否则一旦异常被抛出,程序就会异常终止。 例如,函数 f() 调用 g(),而 g() 又调用 h(),并且 h() 抛出一个异常,则 g() 和 f()中必须有一个提供了相应的异常捕获,否则程序会异常终止。 由于异常会使代码的执行流程从任意地方跳出,因此我们还需要付出大量的精力来编写正确的异常安全代码,例如使用 RAII(资源获取即初始化)来保证资源正确释放。 如下面的示例,虽然我们在函数 f() 中捕获了异常,避免了程序的异常终止,但异常却中断了函数 g() 的正常执行流程,导致对象 m 没有被正确释放,从而出现了资源泄露。这种情况可能还会变相地增加了程序的调试难度。

C++语言

有趣的Unicode表情符号

本文了转载和收集了一些常用的 Unicode 表情符号,方便查阅。完整的 Unicode 表情符号可以查询下面的网站: unicode官网emoji列表 wikipedia List_of_emojis 几何图形🞀🞁🞂🞃🞄🞅🞇🞉...

爱折腾

生活家(转载)

《红楼梦》第五十回中,一夜大雪后,贾府大观园的姐妹们一起作诗,众姐妹要王熙凤为即景联诗起个头。王熙凤虽只识得几个字,倒也不扭捏,笑道:“我想下雪必刮北风。昨夜听见了一夜的北风,我有了一句,就是‘一夜北风紧’,可使得?”众人听了,都相视笑道:“这句虽粗...

剪切板

玩转Qt 2D绘图之画家

在 Qt 2D 世界中,图形基本都由点、线、矩形、多边形、椭圆、圆、折线、曲线、文本、贴图等基本元素辅以着色而构成,而且 QPainter 类已经提供了这些元素的绘制方法,花点时间掌握这些方法,也就掌握了 Qt 2D图形控件的制作,余下的就是勤学多练、孰能生巧了。

Qt

玩转Qt 2D绘图之画家的工具

软件是对现实世界的抽象,在设计软件接口时通常也会参考现实世界来进行设计。 在现实世界中,画家使用画笔、画刷这些工具在宣纸上作画,而在 Qt 中,画家是 QPainter 对象(画家的大脑则是 QPaintEngine),纸张可以是 QPaintDevice 的任何子类对象,如 QWidget、QImage、QPixmap、QGLPixelBuffer 等;在 QPainter 选好纸张后,就可以使用画笔来勾勒物体的轮廓了,Qt 中的画笔是 QPen 对象;画完轮廓后,可能还需要使用画刷来填充轮廓,Qt 中的画刷是 QBrush 对象。

Qt

玩转Qt 2D绘图之坐标系

Qt中提供了强大的 2D 绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,主要基于 QPainter、QPaintDevice和 QPaintEngine 这三个类实现,其中: QPainter执行具体的绘图操作,QPainter 类提供了大量的GUI编程所需的函数,如drawLine、drawImage等。 QPaintDevice 是一个基类,提供绘图设备的抽象接口,它是一个二维空间的抽象,可以使用QPainter在其上进行绘制,常见的继承该类的绘图设备有QImage、QPixmap、QWidget、QOpenGLPaintDevice等。 QPaintEngine 提供了一些抽象接口,用于实现QPainter在不同的设备上进行绘制。QPaintEngine 由 QPaintDevice 创建并管理。

Qt

回顾2D绘图的数学知识

本篇旨在帮助开发人员回顾在2D图形编程中可能会涉及到的数学知识。

编程基础

如何通过结构体成员地址获取父地址

有如下结构体: 12345678struct Test { int a; // .... // 还有若干成员 // ... int y; int z;}; 在只知道成员变量y地址的情况下,如何获取到结构体的首地址?

C++语言
123423