面试题答案
一键面试利用C++静态函数实现跨模块代码复用的方法
- 命名空间:通过命名空间可以避免不同模块中同名函数产生冲突。在每个模块中定义各自的命名空间,将相关的静态函数放在对应的命名空间下。
- 模块间依赖:合理组织头文件包含关系,确保每个模块在使用其他模块的静态函数时,能够正确找到声明。
代码示例
模块A
- a.h
#ifndef A_H
#define A_H
namespace ModuleA {
static void utilityFunctionA() {
// 函数实现
std::cout << "This is utilityFunctionA in ModuleA" << std::endl;
}
}
#endif
模块B
- b.h
#ifndef B_H
#define B_H
#include "a.h"
namespace ModuleB {
void useFunctionFromA() {
ModuleA::utilityFunctionA();
}
}
#endif
主函数
- main.cpp
#include "b.h"
int main() {
ModuleB::useFunctionFromA();
return 0;
}
在上述示例中,模块A定义了自己命名空间ModuleA
下的静态函数utilityFunctionA
。模块B通过包含a.h
头文件,在自己的命名空间ModuleB
下的函数useFunctionFromA
中调用了ModuleA::utilityFunctionA
。这样就实现了跨模块的代码复用,同时通过命名空间避免了命名冲突,并且通过合理的头文件包含处理了模块间依赖。