标签:
对于一个刚刚接触include写法的童鞋来说,
突然看到很多人用如下写法:不知甚解否?
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
//! [前置声明]
QT_BEGIN_NAMESPACE
class QPushButton;
class QLabel;
class QLineEdit;
QT_END_NAMESPACE
//! [前置声明]
class Dialog:public QDialog
{ Q_OBJECT public:
Dialog();
~Dialog();
};
#endif // DIALOG_H
这里记录下自己对此的探究过程:
同样的Qt其他例子程序以及其他内置类,你慢慢看都会找到类似的很多“前置声明”写法,
那么,重点来了:
在Qt里就是如下的一种写法:
//! [前置声明] QT_BEGIN_NAMESPACE class QPushButton; //随便你 class QLabel; //还是随便你 class QLineEdit; //就是随便你 QT_END_NAMESPACE //! [前置声明]
Qt里中的控件类QPushButton、QLabel等等都是一定、肯定、保证定义好并且可以使用的,
那么我们就可以直接用前置声明来写,因为这些控件类不需要我们去操心,肯定能用。
而什么情况下不适合用呢?
比如自定义了一个类继承QDialog,那么QDialog最好用不要用前置声明,而建议用include。
再次声明:本篇完全是个人理解方式、错误难免,忘指正。
标签:
原文地址:http://my.oschina.net/jannn/blog/513687