为什么需要空函数

为什么需要空函数

这取决于您在开发周期中所处的位置,但有时在勾勒出一个算法时,您希望对复杂块进行抽象,而不立即实现它们。

代码语言:javascript复制def full_algo():

init_stuff()

process_stuff()

...您知道init_stuff将如何工作,它在您的头脑中非常简单,但您并不需要它,所以您将它声明为空函数。它将允许您的代码编译和运行,而不必费心于血淋淋的细节。

发布应用程序的另一种用途是在使用继承时。假设有一个大型类定义了特定于平台的代码的行为。最后,您可能会得到一个类似于此的逻辑:

代码语言:javascript复制init_filesystem();

access_files();

release_filesystem();这段代码将在许多平台上运行,但有些平台可能不需要文件系统初始化。然后,您的继承将如下所示( C++中的虚拟with =0只意味着派生类必须实现这些方法):

代码语言:javascript复制class FileSystem{

virtual void init_filesystem() = 0;

virtual void access_files() = 0;

virtual void release_filesystem() = 0;

};然后,这个类(接口)的特定实现可能对其中的一些方法没有任何作用。或者,基类可以声明init/ declaring的空方法,而不是声明它们是虚拟的。

最后(也是可耻的),有时您维护一个非常旧的应用程序。你担心删除方法会破坏一切。这种情况发生在您有复杂的继承而不被正确理解时,或者当您有许多函数指针(回调)时。你只要删除它们里面的代码,它们就会被调用,而不会破坏任何东西。