假设 MyClass 需要来自 Util 类的信息。下面的函数指针使用示例安全吗?请注意,这是在 CPU 资源紧张的嵌入式系统上运行的。
如果我错了,请纠正我,但我相信这有很多优点:
但是,文献并没有给我提供太多这方面的指导。
class Util {
public:
static bool TheTruth() {
return a || (!b && c);
}
bool a = false;
bool b = false;
bool c = false;
};
class MyClass {
public:
MyClass() {
IsItTrue = &MyClass::ReturnFalse;
}
MyClass(bool (*_IsItTrue)(void)) {
IsItTrue = _IsItTrue;
}
void Handler() {
if (serviceRequest) {
truth = IsItTrue();
}
}
private:
bool (*IsItTrue)(void);
static bool ReturnFalse() { return false; }
bool truth;
};
int main() {
Util utility;
MyClass myObject(&Util::TheTruth);
while (true) {
if (condition) {
myObject.Handler();
}
// Some other code
}
}
我尝试过类似的方法并得到了预期的行为; IsItTrue() 获得与 TheTruth() 相同的结果,但周期更少。
使用这种方法有什么风险?