如何将2D矩阵传递给函数

时间:2012-11-28 13:43:30

标签: c++

我正在使用类添加矩阵。我已经声明了一个类'Matrix'。现在我需要将Matrix的一个对象传递给一个函数。我会这样做吗?

3 个答案:

答案 0 :(得分:1)

实际上,最好的方式(恕我直言)是重载operator+()。因此,在您的代码中,您只需要使用+

class Matrix {
    private:
        // Your code
    public:
        // Your code
        friend Matrix operator+(const Matrix &c1, const Matrix &c2);
}

friend Matrix operator+(const Matrix &c1, const Matrix &c2) { <--- passing by reference
    // Your code to add matrices
}

int main() {
    Matrix A, B;
    Matrix C = A + B;
}

在传递值Matrix sum(Matrix a, Matrix b)的情况下,如果动态分配矩阵的内存,则需要编写复制构造函数。

通过指针Matrix sum(Matrix *a, Matrix *b)传递是一种C风格编码,因此它仍然是正确的,但对于C ++来说并不可取。

答案 1 :(得分:0)

Matrix object;
// ...
f(object);

答案 2 :(得分:0)

你有很多方法可以做到。

按价值:

void func (Matrix m);

参考:

void func (Matrix& m);

或通过指针:

void func (Matrix* m);

您使用哪一个取决于您的操作需求和语义。