QString概念解析:
QString类采用隐式共享技术,将深拷贝和浅拷贝邮寄的结合起来,隐式共享可以降低对内存和CPU资源的使用率,提高资源的运行效率。它使得在函数中(如参数、返回值)使用值传递更有效率。
隐式共享工作如下:
QString str1="data"; //初始化一个内容为"data"
QString str2=str1;
str2[3]='e';
str2[0]='f';
str1=str2;
QString str2=str1; //将该字符串对象str1赋值给另一个字符串str2,此时str2=“data”。在对str2赋值时,将发生一次浅拷贝,导致两个QString对象都指向同一个数据结构
str2[3]=‘e’; //对QString对象str2的修改,将会导致一次深拷贝,使得str2对象指向一个新的、不同于str1所指的数据结构,同时改原来的str1指向的数据结构,设置它的引用计数为1(此时,只有QString对象str1指向该数据结构
str2[0]=‘f’; //进一步对QString对象str2进行修改,但这个操作不会引起任何形式的复制,因为str2指向的数据结构没有被共享,此时,str2=“fate”,str1=“data”
str1=str2; //将str2赋值给str1。此时,str1将它指向的数据结构的引用计数器的值修改为0,也就是说,没有QString对象再使用这个数据了
Qt支持的隐式共享的类,还包括:QByteArray、QBrush、QPen、QPalette、QBitmap、QImage、QPixmap、QCursor、QDir、QFont和QVariant等。
QString类的使用:
-
用成员函数判断 QString 对象是否为空字符串:
bool isEmpty() const; // 判断是否为空字符串
-
QString重载