我正在编写一个线性代数库(长话短说,这是一个学校作业),它涉及矩阵,向量等。在创建该库的过程中,我将创建对对象执行数学运算的函数。例如,转置矩阵,反矩阵,归一化向量等。
我很好奇这种函数的“最佳实践”是什么...也就是说,我应该将该函数设为成员函数还是非成员函数?(为清楚起见/图书馆使用)
例:
//Member function way:
B = A.transpose();
C = A.inverse();
//Non-member function way:
B = linalg::transpose(A); //Non-member transpose function in linear algebra namespace
C = linalg::inverse(A);
关于这类操作是否有一些标准?或者至少,人们有一种通用的方式吗?我倾向于第一种选择,但我想知道是否建议这样做。