2025-05-29 13:03:41 +08:00
|
|
|
|
```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了对象之后就捆绑住不让放开的恋爱脑**
|
|
|
|
|
|
2025-05-30 16:42:24 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 八,打包方法
|
|
|
|
|
|
|
|
|
|
## 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 <exe文件所在位置>
|
|
|
|
|
|
|
|
|
|
## 5:输入 windeployqt <x'x'x>.exe
|
|
|
|
|
|
|
|
|
|
打包完成
|
|
|
|
|
|