123 lines
2.6 KiB
Markdown
123 lines
2.6 KiB
Markdown
|
```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了对象之后就捆绑住不让放开的恋爱脑**
|
|||
|
|