Pre-C++ 11我们知道运营商需要短路和评估顺序,&&因为:
1.9.18
在评估以下表达式时
Run Code Online (Sandbox Code Playgroud)a && b a || b a ? b : c a , b使用这些表达式中运算符的内置含义,在评估第一个表达式(12)之后有一个序列点.
但是C++ 11中不再存在序列点,因此标准部分在哪里说:
if (ptr && ptr->do_something())
{
}
Run Code Online (Sandbox Code Playgroud)
是安全的?