这个Qt样板构造函数怎么不是递归的
How is this Qt boilerplate constructor not recursive?
因此,当您创建一个标准的Qt5小部件应用程序时,这是QMainWindow
子类的样板代码:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
所以这个类有一个自己的实例,这似乎很好。但那个实例本身会有一个自身的实例,而这个实例又会有自己的实例。。。
这怎么不会导致包含它们自己的类的无限递归呢?
这不是同一个类。MainWindow
在全局命名空间中声明,而ui
成员的类型为Ui::MainWindow
,它在Ui
命名空间中声明。您可以通过查看ui_mainwindow.h
来查看此类的声明。
由于这是两种不同的类型,因此不会发生递归,因为MainWindow::~MainWindow()
不会从其内部调用。
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 如何在Qt中递归添加源文件
- 在 QT 中创建带有表单的控件时的递归构造函数调用
- 使用 Qt 标头的递归包含时出错
- Qt vs Boost 文件系统递归文件计数
- 在Qt中递归浏览目录,跳过文件夹"."并".."
- Qt/C++:递归互斥、'sync zones'和阻塞信号
- 如何在c++ / Qt中递归地将数据写入文本文件
- Qt c++ QDomDocument,递归迭代XML数据,检索没有子数据的文本元素
- 这个Qt样板构造函数怎么不是递归的