```c++ ``` # 一,C++基础 ## 1,构造函数: ``` 用来初始化对象 (1)默认构造 (2)带参数构造 (3)拷贝构造函数 ``` ```c++ //带参数构造 //格式 class Student { public: int m_age;//参数一 int m_score;//参数二 Student(int age, int score) :m_age(age),m_score(score) { //初始化操作 void init(); void init1(); void init2(); } } ``` ## 2,析构函数: ``` 用来释放资源 ``` ```C++ //带参数构造 //格式 class Student { public: ~Student(); } Student::~Student() { delete ui;//此处我默认了ui已经由构造函数分配了堆——内存,所以我要在析构函数里面释放内存 } ``` ## 3,成员函数 ```C++ //类定义 class Student { public: void inital(); } //成员函数主题 void Student::inital() { } ``` # 二,QT类关系 # 三,信号与槽 # 四,QT定时器 # 五,QT多线程 # 六,QT实现客户端与服务器 # 七,代码问题 ## 1,ui界面不显示 ``` 有一个变量使用了,生命周期特别长,但是没有正确分配内存导致ui界面不显示 需要new一块内存用来存储 需要new的特点: 1,实例化对象,生命周期特别长不能像变量一样随时随地用了销毁 ``` #### (1) 与 `new` 的比较(C++ 视角) | 特性 | `malloc`(C) | `new`(C++) | | ------------ | -------------------------------- | ------------------------------------- | | **语言** | C 语言标准库函数 | C++ 操作符 | | **初始化** | 不初始化,内容随机 | 调用构造函数,初始化对象 | | **返回类型** | `void*`,需强制转换 | 自动返回正确类型的指针 | | **释放方式** | `free` | `delete` | | **异常处理** | 不支持异常 | 支持异常,失败时抛出 `std::bad_alloc` | | **适用场景** | C 程序或需要与 C 交互的 C++ 程序 | 纯 C++ 程序 | **也就是说如果我要用到一个变量,直到它生命周期结束才被销毁,那么我就可以new一个对象** #### (2)内存泄漏:new了但不delete 1,类似“水龙头未关”(代码分配了内存但未释放),水(内存)持续流出但无法回收 2,打满了一桶水洗脸,但是洗完脸不丢掉,一直占用资源 **所以new了不delete有两种后果:一直在new对象的渣男,或者,new了对象之后就捆绑住不让放开的恋爱脑** # 八,打包方法 ## 1:首先发布release ## 2: 把exe文件拷贝出来 随便放一个位置 ## 3: 在菜单 开始那里 找到如下(qt5.9 for Desktop([mingw](https://so.csdn.net/so/search?q=mingw&spm=1001.2101.3001.7020) )), 在输入命令 就是定位你上一步放.exe文件的地方 ## 4:输入 cd ## 5:输入 windeployqt .exe 打包完成