mainwindow.cpp 文件代码功能注释:
MainWindow::MainWindow(QWidget *parent) //自定义类
: QMainWindow(parent) //调用父类的构造函数
, ui(new Ui::MainWindow) //实例化ui
{
ui->setupUi(this); //调用ui里面的成员函数
main.cpp 文件代码功能注释:
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //实例化一个应用程序内对象
MainWindow w; //在栈区实例化自定义类
w.show(); //显示函数
return a.exec(); //轮询等待
}
重新手动实现对象树模型:
#include <iostream>
#include<list>
using namespace std;
class A
{
public:
list<A *> child; //创建子组件链表
public:
A(A *parent = nullptr)
{
if(parent != nullptr) //说明创建对象时,给定了父组件,说明要将自己的地址放到父组件的孩子链表中
{
parent->child.push_back(this);
}
}
virtual ~A() //将所有的子组件释放
{
for(auto p = child.begin(); p!=child.end(); p++)
{
delete *p;
}
}
};
class B : public A
{
public:
B(A *parent = nullptr)
{
if(parent != nullptr)
{
parent->child.push_back(this);
}
cout<<"B的构造函数"<<endl;
}
virtual ~B()
{
cout<<"B的析构函数"<<endl;
}
};
class C : public A
{
public:
C(A *parent = nullptr)
{
if(parent != nullptr)
{
parent->child.push_back(this);
}
cout<<"C的构造函数"<<endl;
}
virtual ~C()
{
cout<<"C的析构函数"<<endl;
}
};
class D :public A
{
private:
public:
D(A*parent = nullptr)
{
if(parent!= nullptr)
{
parent->child.push_back(this);
}
cout<<"D的构造函数"<<endl;
}
virtual ~D()
{
cout<<"D的析构函数"<<endl;
}
};
int main()
{
B w;
C *btn = new C(&w);
D *btn2 = new D(&w);
return 0;
}