哪个最有效:使用 null 对象,或 nullptr 上的分支。C++ 中的示例:
void (*callback)() = [](){}; // Could be a class member
void doDoStuff()
{
// Some code
callback(); // Always OK. Defaults to nop
// More code
}
对比
void (*callback)() = nullptr; // Could be a class member
void doDoStuff()
{
// Some code
if(callback != nullptr) // Check if we should do something or not
{callback();}
// More code
}
假设编译器无法内联它,null 对象将始终执行间接函数调用。使用nullptr,总会做分支,如果有事要做,也会做间接函数调用。
用指向抽象基类的指针替换回调会影响决策吗?
callback
设置为 nullptr 以外的东西的可能性如何。我猜如果callback
最有可能是nullptr,那么使用附加分支会更快,对吧?