在 Qt 中,QString 的赋值操作符(即 =)可以用于直接赋值,而且这些赋值操作是深拷贝的。这意味着当你将一个 QString 对象赋值给另一个 QString 对象时,两个对象将独立存储它们的字符串数据,修改其中一个不会影响另一个。
深拷贝的解释
深拷贝:将一个对象的所有数据复制到另一个对象中,这意味着两个对象有各自独立的内存空间。如果你修改其中一个对象,另一个不会受到影响。
// 示例 1: 使用字符串字面值初始化
QString str1 = "1223231"; // str1 包含 "1223231"
// 示例 2: 使用现有 QString 对象初始化
QString str2 = str1; // str2 现在是 str1 的深拷贝
// 修改 str2 不会影响 str1
str2[0] = '9';
qDebug() << "str1:" << str1; // 输出: "1223231"
qDebug() << "str2:" << str2; // 输出: "9223231"
// 示例 3: 赋值后进行修改
QString str3 = "Hello";
QString str4 = str3;
str4.append(" World!"); // 仅修改 str4,不影响 str3
qDebug() << "str3:" << str3; // 输出: "Hello"
qDebug() << "str4:" << str4; // 输出: "Hello World!"
官方文档中的相关描述
根据 Qt 官方文档:
赋值操作符 operator=:当你将一个 QString 对象赋值给另一个 QString 对象时,Qt 会进行深拷贝。这意味着 str2 = str1 后,str2 将拥有与 str1 相同的字符串内容,但两者是独立的,修改 str2 不会影响 str1。