模拟实现Qt自动释放对象机制
创建一个自定义的类,最主要的目的,是自定义一个析构函数,在析构函数中,完成打印,方便咱们看到最终的自动销毁对象树的效果
这是创建的MyQLabel类的头文件
小技巧:
1.在Qt Creator中,可以通过 F4 切换头文件和对应的 .cpp文件。
这是C++ IDE的常规功能
(比如在 Vim 中可以通过 :A 的方式来完成切换,也可以使用 :AT 的方式新开一个标签页来显示)
2.在点击成员函数上,按Alt+回车,再按回车,会自动生产.cpp文件中成员函数实现。
在mywidget.cpp文件中定义对象,并传this。
使用自己定义的MyQLabel代替原来的QLabel,所谓的 “继承” 本质上是拓展,保持原有功能不变的基础上,给对象扩展出一个析构函数,通过这个析构函数,打印一个自定义的日志,方便我们观察程序运行效果。
在myqlabel.cpp文件中,我们在析构函数中打印一条日志消息,
来让我们看看效果,注意:此时输出什么也没有
当我们关闭这个对话框时
就会出现一条消息。但是这个消息是乱码的。
但是日志消息是有的,说明析构函数是执行了。
虽然没有手动delete,但是由于把MyQLabel挂到了对象树上,此时窗口被销毁的时候,就会自动销毁对象树中的所有对象,MyQLabel的析构是执行到了。