为什么这个if语句没有seg-fault[C++]

why does this if statement not seg fault [C++]

本文关键字:seg-fault C++ if 语句 为什么      更新时间:2023-10-16

假设我定义一个指针变量为某种类类型ptrClass:

ptrClass *ptr;

假设这个CCD_ 1有一个名为CCD_。

所以如果我们这样做:

ptr->get();

这将导致seg故障。

但如果我们执行if(ptr->get()),这不会导致seg错误(if语句根本不执行)。有人能解释为什么会这样吗?为了检查if语句条件,程序是否执行ptr->get(),这将导致seg故障?

有bug的代码会做一些你意想不到的事情。真的就这么简单。修复这个bug,神秘感就会消失。

调用无效指针的方法是未定义的行为,任何事情都可能发生。

您没有显示get()的作用,但如果get()不使用this,也不是virtual,则程序不会取消引用ptr,因此不会使用无效指针。