首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++赋值删除赋值的源

c++赋值删除赋值的源
EN

Stack Overflow用户
提问于 2011-01-15 12:29:11
回答 3查看 83关注 0票数 0

我有一个类(简化的):

代码语言:javascript
复制
class a {
  private:
    std::vector<a> arguments;
  public:
    std::vector<a> getargs() { return arguments; }
};

假设这个类有一个成员函数:

代码语言:javascript
复制
void a::bubble() {
  arguments = arguments[0].getargs();
}

这是不是很合理(因为数据的来源、参数由于命令而被删除了)?

它可以在我的编译器上工作,但我只是想检查一下c++标准是否保证了这个操作的安全性。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-15 12:35:08

是的,没问题。getargs()函数在赋值之前完成。它创建了一个在整个指令语句的生命周期内都存在的临时值(所有的to ;)。这个临时值用于调用std::vector的赋值操作符(但也适用于原始类型)。一切都很正常,而且会工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2011-01-15 12:35:47

为什么不合法呢?当然,你仍然会为此下程序员的地狱,但话又说回来,这并不是真正的你,而是C++。

票数 0
EN

Stack Overflow用户

发布于 2011-01-15 12:35:52

我不知道你想做什么,但它应该工作得很好。唯一的问题是,您必须确保参数中至少有一个元素。

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

https://stackoverflow.com/questions/4697989

复制
相关文章

相似问题

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