gpt4 book ai didi

c++ - NULL 与抛出和性能

转载 作者:太空狗 更新时间:2023-10-29 23:28:46 25 4
gpt4 key购买 nike

我有一个类:

class Vector {
public:
element* get(int i);
private:
element* getIfExists(int i):
};

get 调用 getIfExists;如果元素存在,则返回它,如果不存在,则执行某些操作。 getIfExists 可以表示某些元素 i 不存在通过抛出异常或返回 NULL。

问题:性能上会有什么不同吗?在一种情况下,get 需要检查 ==NULL,在另一种情况下 try...catch

最佳答案

这是一个设计问题,而不是性能问题。如果是异常情况——比如在你的 get 函数中——那么抛出一个异常;甚至更好地触发断言,因为违反函数前提条件是编程错误。如果它是预期的情况 - 就像在您的 getIfExist 函数中一样 - 那么不要抛出异常。

关于性能,存在零成本异常实现(尽管并非所有编译器都使用该策略)。这意味着只有在抛出异常时才会支付开销,这应该是……好吧……异常。

关于c++ - NULL 与抛出和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com