gpt4 book ai didi

c++ - C++ 会破坏给定化合物中的对象吗?

转载 作者:行者123 更新时间:2023-11-30 02:20:38 25 4
gpt4 key购买 nike

设想一个场景:

class B {
int f2() { return 5; }
}

class A {
B f1() { B b1(); return b1; }
}

A var;
int p = var.f1().f2();

当我调用 f1() 时,将创建类 B 的实例。然后,在返回时,创建并返回一个临时拷贝。现在我的问题是,因为我立即在那个返回的对象上调用 f2(),它会在 f2 返回后立即被删除吗?或者它会一直存在到范围结束吗?是否有任何规则描述这种情况或者它是否依赖于编译器?

最佳答案

临时变量一直存在到完整表达式的末尾,在您的情况下由 ; 标记。所以代码是绝对安全的,p 将被初始化为 5

http://en.cppreference.com/w/cpp/language/lifetime

了解更多详情。

编辑:除了@Remy 的评论,您的代码有效,请阅读 Most vexing parse了解更多详情。

关于c++ - C++ 会破坏给定化合物中的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49501618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com