是否建议在现代 C++ 字符串上使用指针? 像这样:
std::string *test = new string();
anyfunction(test);
在test变量中是一个很长的文本。所以我想,使用指针进行操作会更容易、更快。
这是好代码还是坏代码?
最佳答案
总的来说,这是一个非常糟糕的想法 - 原因有两个:
第二个原因:您正在使用手动堆分配,而没有将其包装在智能指针中。但添加例如std::unique_ptr
只是在症状上贴上创可贴。
主要原因:您的思考方向是正确的(避免不必要地复制大量垃圾数据),但您使用了错误的工具。函数参数的类型是正确的工具。
函数只需要读取字符串吗?那么它的签名应该是:
return_type anyfunction(const std::string& test);
通过 const ref 传递不会复制字符串。如果您还需要写访问权限,请省略 const
:
return_type anyfunction(std::string& test);
同样,没有复制。将字符串移动到函数中也可能是一种选择。但如果没有进一步的背景,很难说。
关于C++ 现代字符串指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200822/