Câu hỏi Tôi nên đặt các hàm không liên quan đến một lớp ở đâu đã gây ra một số tranh luận về việc liệu C ++ có hợp lý để kết hợp các hàm tiện ích trong một lớp hay chỉ tồn tại chúng dưới dạng các hàm miễn phí trong một không gian tên.
Tôi đến từ nền C # trong đó tùy chọn thứ hai không tồn tại và do đó, xu hướng sử dụng các lớp tĩnh trong mã C ++ nhỏ mà tôi viết. Tuy nhiên, câu trả lời được bình chọn cao nhất cho câu hỏi đó cũng như một số ý kiến nói rằng các hàm miễn phí sẽ được ưu tiên hơn, thậm chí đề xuất các lớp tĩnh là một mô hình chống. Tại sao lại như vậy trong C ++? Ít nhất là trên bề mặt, các phương thức tĩnh trên một lớp dường như không thể phân biệt được với các hàm tự do trong một không gian tên. Tại sao lại ưu tiên cho cái sau?
Mọi thứ sẽ khác đi, nếu bộ sưu tập các chức năng tiện ích cần một số dữ liệu chia sẻ, ví dụ như bộ đệm có thể lưu trữ trong trường tĩnh riêng?