Q:

Can I use if (pointer) instead of if (pointer != NULL)?

Is it safe to check a pointer to not being NULL by writing simply if(pointer) or do I have to use if(pointer != NULL)?

A:

You can; the null pointer is implicitly converted into boolean false while non-null pointers are converted into true. From the C++11 standard, section on Boolean Conversions:

A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to a
  prvalue of type
  bool. A zero value, null pointer value, or null member pointer value is converted to
  false;
  any other value is converted to
  true
  . A prvalue of type
  std::nullptr_t
  can be converted to a prvalue of
  type
  bool
  ; the resulting value is
  false
  .

A:

Yes, you could.

A null pointer is converted to false implicitly
a non-null pointer is converted to true.

This is part of the C++ standard conversion, which falls in Boolean conversion clause:
§ 4.12 Boolean conversions

A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to a prvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false; any other value is converted to true. A prvalue of type std::nullptr_t can be converted to a prvalue of type bool; the resulting value is false.

A:

Yes, you can. In fact, I prefer to use if(pointer) because it's simpler to read and write once you get used to it.
Also note that C++11 introduced nullptr which is preferred over NULL.

