时序点有关问题

时序点问题,请指教
MyClass   *p;
...
if(p-> MyFunc1()   &&   p-> MyFunc2()   )
{
    p-> MyFunc3();
}

这样的语句,由于&&操作符是一个时序点,所以在执行的时候,是先执行MyFunc1,再执行MyFunc2然后做   &&   操作呢,还是判断MyFunc1   如果为   false   就不执行   MyFunc2呢?
时序点的意思,只是说先执行MyFunc1,再执行MyFunc2,并没有说是否一定会执行MyFunc2?如果不执行的话,那就和下面的语句等价了吗?
if(p-> MyFunc1()   )
    if(   p-> MyFunc2()   )
{
    p-> MyFunc3();
}



------解决方案--------------------
&&,||等是C++语言中少数的几个明确规定了的,我觉得可以大胆使用,比如最常见的:

if(p && p-> Func1()) { ... }
这种大胆使用即可,永远不会引发空指针错误。