I have finished many C++ projects in my class and I have been using pointers for most of the storage, argument passing and returning. I find pointers are more flexible because it can hold a NULL ( more or less like JAVA way to doing things right?). I also use valgrind to reduce leakage.
If I use reference, I will have to write more methods to decide if the variable is valid or not. This is very annoying.
But many people say it better to avoid pointers.
My Question is -- IS it is a good idea not to write additional methods by introducing pointers?
Use a pointer (a smart pointer when transferring ownership of an object) when the argument is optional or if the passed object is supposed to be modified (although the latter is debatable) and a reference otherwise.
Edit: wait a second:
I also use valgrind to reduce leakage.
You aren't supposed to "reduce" it, you're supposed to make sure that it never happens in the first place.
You need to read up on RAII and smart pointers.