我正在为c-strings创建一个动态分配的数组。当它让我调整我的数组大小时,我会使用strcpy,strlen和strcat来帮助完成这个过程。这让我想到当我为c-strings创建动态分配的数组时,我永远不必为c-string数组声明和定义复制构造函数和赋值运算符。但是,如果我要为double或float创建一个动态分配的数组,我必须声明并定义一个复制构造函数来获取该数组的深层副本并声明和定义赋值运算符以允许某人复制一个实例
我的问题是,因为strlen,strcpy和strcat是C语言中的预定义函数,它们会自动处理深层副本和在动态数组中制作实例的副本,还是更聪明地定义和声明复制构造函数和一个赋值运算符?
如果这是模糊的,我可以详细说明。
答案 0 :(得分:1)
C ++有std :: vector和std :: string来自动处理这些事情。您似乎认为动态分配的字符数组会自动被深层复制,但这是不正确的。动态分配的数组的类型不会更改其复制/分配行为;默认的复制/分配提供浅拷贝。您可能需要定义复制构造函数和赋值运算符,或者仅依赖于STL的更强大的功能。
答案 1 :(得分:0)
我的问题是因为strlen,strcpy和strcat是预定义的 他们自动处理C ++语言中的函数 深层复制和动态实例复制等内容 阵列...?
这些是C函数,而不是C ++函数!不,他们不会自动为您执行深层复制。