这段代码什么意思?是作者写错了吗

999朵玫瑰 2009-12-08 02:43:35
#ifndef FINDDIALOG_H
#define FINDDIALOG_H

#include <QtGui/QDialog>

class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

class FindDialog : public QDialog
{
Q_OBJECT

public:
FindDialog(QWidget *parent = 0);
~FindDialog();

我知道#include <QTGui>的意思,就是像java里的import似的将QTGui导入
但是怎么还这么写class QCheckBox;??这个也是导入么?
还有,上面代码的最后一行~FindDialog(); 那个~是什么?是作者笔误么?
...全文
144 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtao9906 2009-12-11
  • 打赏
  • 举报
回复
c++中,当静态分配的变量超出作用域时,或者用new分配的变量被delete之后,析构函数会被自动调用。类似于java里的finalize()方法。只是finalize()有个不同是:finalize()是否会被调用及何时调用,都是不确定的。
RamonJin 2009-12-11
  • 打赏
  • 举报
回复
#include <QtGui/QDialog>
是包含QtGui中的QDialog。
包含以后该文件中可以正常使用QDialog。

class QCheckBox是类的向前声明。
这样可以在对应文件中声明QCheckBox的指针。但是不能存取。

~FindDialog()是类的析构函数。
析构函数负责类对象的销毁工作。
tzcherish 2009-12-10
  • 打赏
  • 举报
回复
class QCheckBox:前向声明
通过前向声明,编译器就知道这个类已经存在,而不用写出包含的头文件.对于私有成员变量,我们只是使用了它们的指针,没有对它们进行存取操作,编译器不需要知道它们的详细定义,所以只使用了这些类的前向声明。当然,也可以使用<QCheckBox>,<QLabel>等,但是,使用前向声明会让编译速度更快一些。

那个析构函数,看C++吧。。
orsak 2009-12-10
  • 打赏
  • 举报
回复
class QCheckBox; 前向声明,我们定义了它们的指针,没有对它们进行存取操作,编译器不需要知道它们的详细定义,所以只使用了这些类的前向声明。也可以使用#include <QCheckBox>,#include <QLabel>等,但是,使用前向声明会让编译速度更快一些。

~FindDialog() ; 析构函数

==========
这个回答最靠谱,C++的类如果没有完全定义,不能定义该类的对象,但是可以定义该类的指针和引用
这里前向声明声明了QCheckBox 是一个类,后面就可以使用它来定义指针和引用,但是不可以定义QcheckBox对象.
gemfield 2009-12-08
  • 打赏
  • 举报
回复
c++中,当静态分配的变量超出作用域时,或者用new分配的变量被delete之后,析构函数会被自动调用。类似于java里的finalize()方法。只是finalize()有个不同是:finalize()是否会被调用及何时调用,都是不确定的。
winux 2009-12-08
  • 打赏
  • 举报
回复
和Qt无关,需要恶补C++基础知识。不是一句两句能解释清楚
VirtualSniper 2009-12-08
  • 打赏
  • 举报
回复
class QCheckBox; 前向声明,我们定义了它们的指针,没有对它们进行存取操作,编译器不需要知道它们的详细定义,所以只使用了这些类的前向声明。也可以使用#include <QCheckBox>,#include <QLabel>等,但是,使用前向声明会让编译速度更快一些。

~FindDialog() ; 析构函数
kl12540 2009-12-08
  • 打赏
  • 举报
回复
class QCheckBox;
这只是类声明,让此类的名称在作用域内可见. 也起到显示提示的作用(让人知道該头文件使用了該类的 指针);因为在C++中允许多次声明,所以即时在QtGui包含QCheckBox的声明也无所谓

析构函数: 是在該对象销毁时隐式调用的(主要完成清理工作);

建议你先复习在C++语言

999朵玫瑰 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dext 的回复:]
引用 2 楼 jpchen609 的回复:
class QCheckBox 其实这个是预编译作用,只是为了加快编译速度,其实不加也行的。
~FindDialog(); 是析构函数,等程序执行完,会直接调用。


两句话 都不对  ~_~
[/Quote]
dext帮新人指导一下阿,快迷糊了
dext 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jpchen609 的回复:]
class QCheckBox 其实这个是预编译作用,只是为了加快编译速度,其实不加也行的。
~FindDialog(); 是析构函数,等程序执行完,会直接调用。
[/Quote]

两句话 都不对 ~_~
jpchen609 2009-12-08
  • 打赏
  • 举报
回复
析构函数的作用是对创建的空间进行释放,比方说我们用构造函数创建了一个对象,然后析构函数的作用就是对其进行释放,而QtGui是一个模块,他已经包含QCheckBox类了。
999朵玫瑰 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jpchen609 的回复:]
class QCheckBox 其实这个是预编译作用,只是为了加快编译速度,其实不加也行的。
~FindDialog(); 是析构函数,等程序执行完,会直接调用。
[/Quote]
不是说,C++里没有默认导入,必须显示导入?不加怎么导入QCheckBox等类?
999朵玫瑰 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ttffly 的回复:]
~FindDialog(); 那个~是析构函数
前面的两个问题不懂,不熟悉java

[/Quote]
什么是析构函数
jpchen609 2009-12-08
  • 打赏
  • 举报
回复
class QCheckBox 其实这个是预编译作用,只是为了加快编译速度,其实不加也行的。
~FindDialog(); 是析构函数,等程序执行完,会直接调用。
ttffly 2009-12-08
  • 打赏
  • 举报
回复
~FindDialog(); 那个~是析构函数
前面的两个问题不懂,不熟悉java

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧