c c++ string-c++ string类型的变量赋值是浅拷贝还是深拷贝?

问题描述

c++ string类型的变量赋值是浅拷贝还是深拷贝?

string str1 = "123453";
string str2 = str1;
str1和str2的内存地址是相同的吗?str2中某一字符值的改变会影响到str1吗?

解决方案

不同。string 有自己的构造函数来分配空间。
所以不会影响

解决方案二:

浅拷贝还是深拷贝这是对于指针来说的,基本变量是没有这一说的,都是直接分配一个新的内存给它。
所以不会有影响的

解决方案三:

string类是stl类,已经封装好了,当然是深度拷贝,直接用就可以,完全不用担心内存的问题,经过几十年的安全检验了

解决方案四:

string直接进行了深拷贝。值复制了。修改一个不会影响另一个。
不同编译器,不同版本stl也有实现区别,比如用copy on write。

解决方案五:

集合类型的赋值和拷贝

解决方案六:

但是我在Linux测过这样的代码:
string str1="123453";
string str2=str1;
虽然str1和str2的地址不一样,但是声明str2后,分配的内存大小没有变,这是什么缘故呢?
在这基础之上,在声明一个char*的变量
char ch=(char)str2.c_str();
*(ch+3)='f';
这样操作之后,str1的值也改变了,这是什么原因呢?

时间: 2024-12-30 06:19:52

c c++ string-c++ string类型的变量赋值是浅拷贝还是深拷贝?的相关文章

vb.net定义一个date类型的变量但赋值给了一个string类型的数值,怎样转换

问题描述 vb.net定义一个date类型的变量但赋值给了一个string类型的数值,怎样转换 代码如下,怎样把"00:00:00"字符串转换为date类型,使数值一致 Optional ByVal iPrintTime As Date = "00:00:00" 解决方案 没有日期,那么你得假定一个日期 s = "00:00:00" Dim dt As DateTime = DateTime.Parse(DateTime.Now.ToString

C++中实现string类型转换int类型

C语言转换形式: ... std::string str; int i = atoi(str.c_str()); ... C++转换形式(C++11): ... std::string str; int i = std::stoi(str); ... 同样, 可以使用 stol(long), stof(float), stod(double) 等. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/ 以上是

String类中的成员变量offset可以直接访问吗?

问题描述 String类中的成员变量offset可以直接访问吗? 第一次提问~今天在看String的字符串匹配实现,看到里面有个private的成员offset. /** The offset is the first index of the storage that is used. */ private final int offset; 完了之后再String的一个constructor中看到了这种访问 /** * Allocates a new string that contains

c++-C#中的string或者char类型数据如何转化为C++中的char类型数据

问题描述 C#中的string或者char类型数据如何转化为C++中的char类型数据 C++代码:bool hasfire(char s[100]) 因为使用C++做DLL文件,调用hasfire()这个函数时,发现C#中的char类型和C++中的不大一样,不知道怎么处理才能把C#中的char转化成C++中的char类型.

js中string和number类型互转换技巧(分享)_javascript技巧

1.string-->number string类型   *1  即可变成  number类型 2.number-->string number类型  +''  即可变成  string 类型 <script type="text/javascript"> function screenInfo() { var str = '012.8372'; var s = 0; str = str * 1; alert(typeof (str));//number s +

用标准c++实现string与各种类型之间的转换_C 语言

要实现这个目标,非stringstream类莫属. 这个类在头文件中定义, < sstream>库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输出操作.另外,每个类都有一个对应的宽字符集版本. 简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作. 示例1示范怎样使用一个stringstream对象进行从 string到int类型的转换 注意,使用string对象来代替字符数组

java string类型转换boolean类型的方法_java

今天偶然想把string 类型转换成 boolean 类型 ,查了下api文档,发现文档似乎有点不太对经... 嗯,就直接发测试代码吧,废话懒得说了... String s1 = "false"; String s2 = "true"; String s3 = "fAlSe"; String s4 = "TrUe"; String s5 = "true_a"; 以上的string 分别用 Boolean.g

C#教程第二课:表达式,类型和变量

变量|教程 本节课将介绍C# 语言的表达式,类型和变量.本节课要达到如下几个目的:1.了解什么是"变量" 2.学习C#的简单类型 3.对C#表达式有个初步的了解 4.了解什么是String类型 5.学习如何使用数组 "变量"仅仅是数据的存储位置.你可以把数据存放到其中,或者从中取出来作为C#表达式的一部分.变量中所存放的数据的含义是通过类型来控制的. C#是个强类型(???)的语言.这样,一切对变量的操作都是针对该变量的类型而进行的.为了保证变量中所存放数据的合法性

区分java中String+String和String+char_java

我们来考虑一个关于java中String的问题: "abc" + '/'和 "abc" + "/"的区别. 通过这个例子, 我们可以顺便练习一下JDK工具中javap的用法, 原问题是这样的: 把斜杠/当作字符或字符串有什么区别呢? 一个是当作基本数据类型char,一个是对象String.具体有什么区别呢? 当作字符效率会更高吗?String str = "abc" + '/';和String str = "abc&