gpt4 book ai didi

c++ - unreachable-code 在 C++11 中,这可能是什么原因造成的?

转载 作者:行者123 更新时间:2023-12-01 14:25:15 24 4
gpt4 key购买 nike

我在 Clion 中为我的 C++11 编写了以下代码:

Matrix<T> &Matrix<T>::operator=(const Matrix<T> &matrix) {
if (this == &matrix) {
return *this;
}
int matrix_size = matrix.size();
T *temp = new T[matrix_size];
try {
for (int i = 0; i < matrix_size; ++i) {
temp[i] = data[i];
}
}
catch (...)
{
delete[] temp;
throw;
}
delete[] data;
data = temp;
dimensions = matrix.dimensions;
return *this;
}

但它告诉我,catch 里面写的是一段无法访问的代码,这是为什么呢?

最佳答案

Clion 可能是错的。如果 T 抛出复制分配,它显然不是不可访问的。

Demo

我认为评估正确的唯一方法是检查 Matrix 的每个实例,并确保在每种情况下所使用的类型都不会抛出异常。但是,我仍然不同意它,因为 Matrix 可以在 Clion 无法访问的地方使用。

请注意,您无论如何都不应该这样编写代码。使用 std::vector 而不是原始指针和动态分配。那么您就不需要 try-catch block :std::vector 会为您处理这些。

此外,我相信您打算在循环中编写 temp[i] = matrix.data[i];

关于c++ - unreachable-code 在 C++11 中,这可能是什么原因造成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62414215/

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