1. C++中的静态成员变量
.h
// 单例指针
static SerialManager *m_instance;
.cpp
// 静态成员变量,必须在类外单独定义
SerialManager* SerialManager::m_instance = nullptr;
-
静态成员变量必须在类外定义
- 在
C++中,类的静态成员变量(static成员)必须在类外单独定义,否则会导致链接错误 - 在头文件中,static SerialManager *m_instance;只是声明,而不是定义,编译器不会为它分配存储空间。
- 因此,必须在.cpp文件中显式定义这个静态变量,否则程序运行时会出现m_instance未定义的错误
- 在
-
初始化m_instance为nullptr
- =nullptr确保m_instance初始化为空指针,防止未初始化的指针导致未定义行为
- 如果不初始化,m_instance的值可能是随机的,导致instance()方法无法正确判断是否已经创建实例
不允许对数组进行整体赋值操作,只能使用循环逐一复制元素
数组的地址:
数组的基地址:数组开始存储的物理地址
数组首元素的基地址:数组首个元素开始存储的物理地址,数值上总是与数组基地址相同
&操作符:&a获得数组的基地址;&a[0]获得数组首元素的基地址
void handleSerialData(const QByteArray &data);
- const:
- 保护数据:const确保方法内部不能修改data的内容,防止意外更改调用者的数据
- 接口明确:向调用者表明该函数不会修改传入的数据,增强代码的可读性和安全性
- &(引用):
- 避免拷贝:使用引用传递可以避免在函数调用时对QByteArray对象进行拷贝,提高性能,尤其是当data较大时
- 直接操作原数据:引用允许函数直接访问调用者传递的对象,而不是副本
const QByteArray &data是一种高效且安全的参数传递方式





网友评论