gpt4 book ai didi

c++ - 从Lambda中的空指针调用方法

转载 作者:行者123 更新时间:2023-12-02 09:58:09 28 4
gpt4 key购买 nike

考虑这段代码:

struct A {
bool f() { return true; }
};

// ...
std::vector<A*> v = {new A(), nullptr, new A()};
std::find_if(v.begin(), v.end(), [](const A* object) { return object->f(); });

如果我们从 nullptr对象调用方法,这是未定义的行为吗?如果是,并且我想解决此问题,是否在开头添加 A != nullptr就足够了,以便在执行潜在危险代码之前条件短路?

最佳答案

根据this post,是的,这将导致不确定的行为。
如果您希望避免未定义的行为(在代码尝试执行标准未定义的操作时发生),那么可以,如果代码没有执行,则可以避免UB,这可以通过条件避免。

关于c++ - 从Lambda中的空指针调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64243036/

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