gpt4 book ai didi

c++ - 对 null 对象的函数调用返回的 bool 值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:34 26 4
gpt4 key购买 nike

在 C++ 中对空对象进行函数调用时返回的 bool 值是什么?

ClassDummy* dummy = NULL;
if (!dummy->dummy_function(1,2,3)) {
// Do Something
}

根据 C++11 标准,这不应该返回错误吗?

最佳答案

除非 dummy 已在命名空间范围内声明,否则它未初始化且其值未指定,即它可能为 null 也可能不为 null。在 nullptr 或指向无效内存的指针上调用成员函数是未定义的行为

你可能 get away with the correct result如果您调用的成员函数不访问该类的任何其他数据成员;换句话说,如果它不取消引用 this 指针。但是,无论你是否得到预期的结果,它仍然是未定义的行为。

编译器不需要检测此类无效函数调用。如果您做了一些显而易见的事情,例如将一个对象指针初始化为 nullptr,然后对其调用一个成员函数,您可能会看到来自编译器的诊断信息,但这并不能保证。

关于c++ - 对 null 对象的函数调用返回的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24102267/

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