首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回字符串结构安全吗?

返回字符串结构安全吗?
EN

Stack Overflow用户
提问于 2014-04-28 22:17:30
回答 3查看 91关注 0票数 2

我正在编写一个需要递归拆分数据的函数解析器,即

aba$(2)cd$(5)efg

返回aba$(2)$(5)efg

我需要做一个能容纳三根弦的结构,

代码语言:javascript
复制
struct split3 {
   std::string before, middle, after;
};

如果我在结构中分配字符串,然后返回它们,这安全吗?如果没有,我该怎么办?我并不认为它是安全的,因为没有结构的复制构造函数,并且这些字符串将存在于堆栈中,而在返回之后,这个字符串就不会存在(至少在很长的时间内)?

代码语言:javascript
复制
split3 func(...) {
s = split3();
... do stuff to s.before, s.middle, s.after;
return s;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-28 22:18:43

是的,很安全。split3将被赋予一个默认的复制构造函数,该构造函数将只调用字符串3次。听起来这就是你想要的。

确实,您在func()堆栈上创建的原始字符串在返回后将不再有效,但返回的split3对象内的副本将是正常的。

票数 4
EN

Stack Overflow用户

发布于 2014-04-28 22:20:00

是的,它是安全的(在正确的意义上)。不需要显式复制构造函数,因为默认的复制构造函数就足够了。通过正确复制所有3个字符串,您的结构将被复制。

票数 3
EN

Stack Overflow用户

发布于 2014-04-28 22:52:11

就像其他人说的那样,这是安全的。记住这是在复制。这意味着,如果你有一个非常大的结构,它将不得不复制整个东西。如果是这样的小东西,那就不重要了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23352142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档