单个函数类相对于一个函数的优势是什么



我经常遇到具有以下结构的类:

class FooAlgorithm {
public:
FooAlgorithm(A a, B b);
void run();
private:
A _a;
B _b;
};

因此,只有一个公共成员函数的类也只能运行一次。在任何情况下,与单个自由函数foo(A a, B b)相比,是否有任何优势?后一个选项更容易调用,可能具有更少的标头依赖性,并且标头中的样板文件也更少。

对象具有可以在对象构造时设置的状态。然后,可以在稍后调用单成员函数,而不知道对象是如何设置的,并且该函数可以引用先前设置的状态。独立函数无法做到这一点。任何状态都必须作为参数传递给它,或者是全局/静态的(出于各种原因,最好避免全局/静态数据(。

一个实际操作的例子胜过一千个抽象的解释,所以这里有一个练习。考虑一个简单的对象:

struct Obj {
std::array<std::string, 42> attributes;
};

如果只比较属性编号K(K是0..41范围内的运行时参数(,您将如何对此类对象的向量进行排序?使用std::sort,不要使用任何全局或静态数据。注意std::sort是如何比较两个对象的:它调用用户提供的比较器,并将两个要比较的对象传递给它,但它对参数K一无所知,无法将其传递给比较器。

对于较大的项目,使用OOP构建程序可能更容易。对于像您这样的简单程序,使用单个函数更容易。

类为程序引入了新的动态->更好的可读性、安全性、模块化和可重用性。。。。函数用于将代码组织成块。

最新更新