NULL vs throw和performance

Jak*_* M. 2 c++ performance null exception

我有一节课:

class Vector {
    public:
    element* get(int i);
    private:
    element* getIfExists(int i):
};
Run Code Online (Sandbox Code Playgroud)

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

问题:性能会有差异吗?在一种情况下,get需要检查==NULL,在另一种情况下try... catch.

K-b*_*llo 5

它是设计问题,而不是性能问题.如果它是一个特殊的情况 - 就像你的get函数 - 然后抛出异常; 甚至更好地触发断言,因为违反函数前置条件是编程错误.如果它在你的getIfExist函数中是一个预期的大小写 - 那么就不要抛出异常.

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