c++中直接给另一个变量赋值一个std::tring类型的变量,更改一个变量两一个会变吗
时间: 2024-01-22 10:18:17 浏览: 62
如果你直接给另一个变量赋值一个std::string类型的变量,那么这两个变量会指向同一个std::string对象,它们实际上是共享同一个内存地址。因此,更改其中一个变量的值将会影响另一个变量的值。
例如,以下代码演示了这一点:
```c++
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello";
std::string str2 = str1;
std::cout << "str1: " << str1 << std::endl; // 输出 "Hello"
std::cout << "str2: " << str2 << std::endl; // 输出 "Hello"
str1 = "World";
std::cout << "str1: " << str1 << std::endl; // 输出 "World"
std::cout << "str2: " << str2 << std::endl; // 输出 "Hello",因为str2仍指向"Hello"的内存地址
return 0;
}
```
因此,如果你想让这两个变量互不影响,可以使用std::string的拷贝构造函数或者赋值运算符:
```c++
std::string str1 = "Hello";
std::string str2(str1); // 使用拷贝构造函数
std::string str3 = str1; // 使用赋值运算符
```
这样,str2和str3都会创建新的std::string对象,并且与str1完全独立,更改它们的值不会影响str1。
阅读全文