小编cdu*_*mie的帖子

具有两个类似catch部分的代码的异常处理行为

我有一个我只为练习目的创建的短代码,我想检查如果我有两个catch部分会发生什么,一个是通过引用捕获(int&)而第二个是按值(int)捕获.问题是,当我运行此代码时,即使我抛出"常规"整数,也会出现按引用捕获.为什么会这样?

注意:当我在MSVS17上编译它时,我得到错误C2313:

'int':由第15行的引用('int&')捕获

但是当我使用在线编译器时它工作得很好.

当我删除其中一个catch部分时,即使在MSVS17中它也可以正常工作,但是,为什么是调用引用的catch部分而不是另一个

#include <iostream>
using namespace std;

int main()
{
    int i = 5;
    try {
        if (i)
            throw(i);
        return 0;
    }

    catch (int &)
    {
        cout << "Int&";
    }

    catch (int)
    {
        cout << "Int";
    }
}
Run Code Online (Sandbox Code Playgroud)

c++

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

在cpp中使用for_each循环遍历数组

首先,下面是代码:

#include <iostream>
#include <algorithm>

using namespace std;




class Array
{

    int* arr;
    int n;

    public:

    Array();
    Array(const Array&);
    Array(Array &&);
    Array& operator=(const Array&);
    Array& operator=(Array &&);
    void print();
    ~Array();
};

Array::Array()
{
    cout<<"No of elements: "<<endl;
    cin>>n;
    if(n!=0)
    {
       arr = new int [n];
       cout<<"\nInsert values:"<<endl;
       for_each(arr, arr+n, [](int x){cin>>x;});
    }
}

Array::Array (const Array& a)
{   
    int i=0;
    this->n=a.n;
    arr= new int [n];
    for(i=0;i<n;i++)
       arr[i]=a.arr[i];
}

Array::Array (Array &&a)
{
    this->n=a.n;
    arr=a.arr;
    a.arr=nullptr;
}

Array& Array::operator=(const Array& a) …
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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

标签 统计

c++ ×2

arrays ×1