相关疑难解决方法(0)

在异常情况下将临时对象绑定到非常量引用

我一直读到,在函数调用的情况下,临时变量只能与非常量引用参数绑定。

情况1:-

例如:-

class Simple{
    public: 
       int i;
       Simple(Simple &f)
       {
         i = f.i + 1;
       }
       Simple(int j)
       {
         i = j;
       }
  };

int main()
{
   Simple f1 = Simple(2);   // error no matching call fruit::fruit(fruit)...
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这会给我错误,因为我试图用非常量引用参数临时绑定。

案例2:-

try
{
 throw e;
}
catch ( exception& e )
{
}
Run Code Online (Sandbox Code Playgroud)

我已经了解到,当我们抛出异常时,真正传递给 catch 的是抛出的原始异常的副本,即为抛出的对象创建一个临时对象,然后将其传递给 catch 子句。

catch 正在做的是通过非常量引用来捕获这个异常。这与我在案例 1 中展示的相反。

所以,我的问题是:-

1) 是否有允许临时绑定到非常量引用的特定场景。

2)如果有那么在允许这些例外时考虑了哪些因素。

c++ temporary-objects

3
推荐指数
1
解决办法
518
查看次数

标签 统计

c++ ×1

temporary-objects ×1