在C++程序中,这里有两个运算符标题用作未示出的矩阵实现的setter和getters。在矩阵实现的[]运算符中发现设计缺陷
double* Matrix::operator[](unsigned int row) const throw (MatrixException);
double* Matrix::operator[](unsigned int row) throw (MatrixException);
不知道任何进一步的关于上述运营商的实施,只要看一眼上面的运营商是如何定义什么是矩阵中的程序设计上的漏洞,如果实现这两种方法。
澄清有关如何[]运算符的工作: 如下设置矩阵:
Matrix *a = new Matrix(1,2); //matrix with one row and two columns
a[0][0] = 3.0;
a[0][1] = 2.3;
//to access a matrix value
double* b = a[0][1];
delete a;
编辑:你会在运营商定义来解决设计上的缺陷变化?
对于初学者,他们应该返回引用,而不是指针。此外,异常规范(函数旁边的'throw')已被弃用。 –
像这样的抛出规范是混淆,误导和从C++ 11中删除(不推荐)。好消除 – Zeks