一、引言
在 C++ 编程中,string是处理字符串的核心类,相较于 C 风格字符数组,它自动管理内存、提供丰富操作接口,极大提升了开发效率与代码安全性。本文将从深浅拷贝原理、string底层模拟实现、标准库string常用函数详解、迭代器与容器实战、字符串数字相加案例等维度,全面梳理string类的核心知识,形成从原理到实战的完整体系。
二、浅拷贝与深拷贝的基本概念
2.1 浅拷贝
浅拷贝仅复制对象成员变量的值,若成员包含指针,仅拷贝指针地址,使多个对象指向同一块内存。
- 问题:对象析构时,同一块内存会被重复释放,导致程序崩溃或悬空指针。
- 本质:位拷贝,只拷贝指针,不拷贝指向的数据。
2.2 深拷贝
深拷贝会为指针成员重新分配独立内存,并复制原数据,使每个对象拥有专属内存空间,互不干扰。
- 优势:避免内存重复释放、数据篡改等问题,是
string类的默认拷贝机制。 - 本质:重新开辟内存 + 数据拷贝。
三、C++ 中 string 类的默认行为
C++ 标准库std::string的拷贝构造函数、赋值运算符均实现深拷贝,修改一个对象不会影响另一个:
#include <iostream>
#include <string>
using namespace std;
int main() {
string original = "Hello, World!";
string copy1(original); // 拷贝构造(深拷贝)
string copy2 = original; // 赋值运算符(深拷贝)
copy1[0] = 'h'; // 修改 copy1,original、copy2 不受影响
cout << original << endl; // Hello, World!
cout << copy1 << endl; // hello, World!
cout << copy2 << endl; // Hello, World!
return 0;
}


