关于NULL,0,nullptr
1、NULL起源于C语言,定义如下
#define NULL ((void*)0)
在C++中void*是不太受欢迎的,很容易出现问题,在赋值给其他指针类型的时候会隐士转换成该类型(也就是运行时确认),C++不允许隐式转换指针,因此定义如下:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
这里的0,是C++中惯用的表示空指针的方法,但是还是应该在申明空指针的地方用0更好,用NULL不存在类型检查(因为他是宏)
关于nullptr,是C++11中的新关键词,用来解决0指针的二义性问题(0既是int 型又可以表示空指针)
可以参考这里的例子:http://www.cnblogs.com/porter/p/3611718.html
关于Qt
Qt是一个跨平台GUI框架。
使用的是GUI模拟的方法实现跨平台,也即利用平台提供的绘图函数自己绘制所有的控件,也是Qt运行缓慢的原因之一(更多的原因是信号槽机制导致的,稍后说)<