Tôi đang viết thư viện đại số tuyến tính (truyện ngắn, đó là bài tập của trường) liên quan đến ma trận, vectơ, v.v. Trong quá trình tạo thư viện này, tôi sẽ tạo các hàm thực hiện các phép toán trên các đối tượng. Ví dụ, ma trận chuyển vị, ma trận đảo ngược, vectơ chuẩn hóa, v.v.
Tôi tò mò không biết "cách thực hành tốt nhất" cho loại chức năng này là gì ... Nghĩa là tôi nên biến chức năng này thành chức năng thành viên hay không phải là thành viên? (Để rõ ràng / sử dụng thư viện vì lợi ích)
Thí dụ:
//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);
Có một số tiêu chuẩn liên quan đến các loại hoạt động? Hoặc, ít nhất, có một cách phổ biến mọi người làm điều này? Tôi đang nghiêng về lựa chọn đầu tiên, nhưng tôi muốn biết liệu điều này có được khuyến nghị không.