I read from somewhere that when using C++ it is recommended not to use pointers. Why is pointers such a bad idea when you are using C++. For C programmers that are used to using pointers, what is the better alternative and approach in C++?
I think they mean you should use smart pointers instead of regular pointers.


  In computer science, a smart pointer
  is an abstract data type that
  simulates a pointer while providing
  additional features, such as automatic
  garbage collection or bounds checking.
  These additional features are intended
  to reduce bugs caused by the misuse of
  pointers while retaining efficiency.
  Smart pointers typically keep track of
  the objects they point to for the
  purpose of memory management.
  
  The misuse of pointers is a major
  source of bugs: the constant
  allocation, deallocation and
  referencing that must be performed by
  a program written using pointers
  introduces the risk that memory leaks
  will occur. Smart pointers try to
  prevent memory leaks by making the
  resource deallocation automatic: when
  the pointer (or the last in a series
  of pointers) to an object is
  destroyed, for example because it goes
  out of scope, the pointed object is
  destroyed too.


In C++ the emphasis would be on garbage collection and preventing memory leaks (just to name two).  Pointers are a fundamental part of the language, so not using them is pretty much impossible except in the most trival of programs.
