c++函数重载的问题

double Matrix::operator()(int row, int col) {
    std::cout << "() 1" << std::endl;
    if (row >= _row || col >= _col) {
        std::cout << "index out of range!" << std::endl;
        return -1;
    }
    return _matrix[row][col];
}

double &Matrix::operator()(int row, int col) const {
    std::cout << "() 2" << std::endl;
    double init_value = -1;
    if (row >= _row || col >= _col)
    {
        std::cout << "index out of range!" << std::endl;
        return init_value;
    }
    init_value = _matrix[row][col];
    // 因为声明为了const, 所以不能直接把_matrix[row][col]返回回去
    return init_value;
}

请问什么情况下会调用第二个方法?

阅读 1.8k
2 个回答

使用const修饰对象的时候

const Matrix m(...);
double re = m(3, 4);

这代码有问题吧谁写的。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题