我基本上想知道后者是否更有效/更优化,因为它没有创建字符串的副本?
我想使用构造函数创建一个字符串 像字符串str(str1,3,5);
答案 0 :(得分:5)
我想使用类似字符串str(str1,3,5);的构造函数制作一个字符串
如果我们查看相应的std::string
构造函数here,就会发现它具有签名
basic_string( const basic_string& other,
size_type pos,
size_type count,
const Allocator& alloc = Allocator() );
请注意const basic_string& other
部分:字符串通过const引用传递,不涉及任何临时副本。因此,std::string str(str1, 3, 5)
会尽可能地高效,而执行std::string str((std::string &)str1, 3, 5)
只会混淆代码:它包含一个(通常被认为是不好的)C样式强制转换,它假装引用是非常量的,并且为读者增加了认知工作,却一无所获。