- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我知道 const 引用可以延长本地临时文件的生命周期。现在我问自己是否可以在临时对象链上扩展这种礼节,也就是说,我是否可以安全地定义:
std::string const& foo = aBar.getTemporaryObject1().getTemporaryObject2();
我的感觉是,由于第一个方法 aBar.getTemporaryObject1()
返回的已经是一个临时对象,因此 aBar.getTemporaryObject2()
不适用.
最佳答案
仅当引用直接绑定(bind)到该临时对象时才适用生命周期延长。
例如,从该引用初始化另一个引用不会执行另一个扩展。
但是,在您的代码中:
std::string const& foo = aBar.getTemporaryObject1().getTemporaryObject2();
您直接将 foo
绑定(bind)到 getTemporaryObject2()
的返回值,假设这是一个按值返回的函数。这是否是另一个临时对象的成员函数或其他什么都没有关系。所以这段代码是可以的。
getTemporaryObject1()
返回的对象的生命周期没有延长,但这无关紧要(除非 getTemporaryObject2
的返回值包含对该对象的引用或指针,或其他东西,但由于它显然是一个 std::string
,所以它不能)。
关于c++ - const引用是否延长了临时对象返回的临时对象的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982630/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!