Что считается лучшей практикой?
Если функция может быть реализована как функция, не являющаяся членом, с использованием существующих public
функций-членов класса, лучшечтобы сделать его функцией, не являющейся членом.
См. Как функции, не являющиеся членами, улучшают инкапсуляцию , если вы можете найти время.Это немного длинно.
Простой пример:
class Circle
{
public:
Circle(double r = 0) : radius(r) {}
double getRadius() const { return radius; }
priviate:
double radius;
};
Учитывая вышеизложенное, можно реализовать функции для вычисления площади и окружности круга, используя функции, не являющиеся членами.
double area(Circle const& c)
{
double r = c.getRadius();
return M_PI*r*r;
}
double circumference(Circle const& c)
{
double r = c.getRadius();
return 2*M_PI*r;
}
Согласно вышеприведенной статье, эти функции лучше реализовать как функции, не являющиеся членами, так как они могут быть реализованы с использованием существующего интерфейса public
Circle
.
.