为什么这个if语句不是段错[C ++]

时间:2016-03-31 21:55:08

标签: c++ pointers segmentation-fault

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

ptrClass *ptr;

让我们说这个ptrClass有一个名为get()的成员函数,它返回一个指向任何东西的指针。

所以,如果我们这样做:

ptr->get();

这会导致段错误。

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

2 个答案:

答案 0 :(得分:1)

包含错误的代码将执行您不期望的操作。它真的很简单。修复错误,神秘感将会消失。

答案 1 :(得分:1)

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

您不会显示get()的内容,但如果get()未使用thisvirtual不是ptr,则该程序不会取消引用{{1}所以它不会使用无效的指针。