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