假设我将一个指针变量定义为某种类型的类型ptrClass:
ptrClass *ptr;
让我们说这个ptrClass
有一个名为get()
的成员函数,它返回一个指向任何东西的指针。
所以,如果我们这样做:
ptr->get();
这会导致段错误。
但是如果我们执行if(ptr->get())
,这不会导致seg错误(if语句根本不执行)。有人可以解释为什么会这样吗?为了检查if语句条件,程序是否执行ptr->get()
,这会导致seg错误?
答案 0 :(得分:1)
包含错误的代码将执行您不期望的操作。它真的很简单。修复错误,神秘感将会消失。
答案 1 :(得分:1)
无效指针的调用方法是未定义的行为,任何事情都可能发生。
您不会显示get()
的内容,但如果get()
未使用this
且virtual
不是ptr
,则该程序不会取消引用{{1}所以它不会使用无效的指针。