所以 C++ 支持面向对象,但并不强制使用它。 让我们举个例子: 我们有一个 Fruit 类,里面有一些复杂的数据。而我们要计算卡路里
选项 1:
我们直接把方法放在类中:
公开:
int 计算卡路里();
选项 2:
我们将其放在 Fruit.cpp 中,但不放在类本身中:
int calculateCalories(Fruit f);
->什么被认为是更好的实践?
最佳答案
What is considered to be better pratice?
如果函数可以使用现有的 public
实现为非成员函数类的成员函数,最好使它成为非成员函数。
参见 How Non-Member Functions Improve Encapsulation如果你能抽出时间。有点长。
简单的例子:
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
的界面.
关于对象或静态中的 C++ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55529542/