Quote Originally Posted by umanga View Post
Hi all,
I want to know which standards i should follow (C++0x , TR1..etc?) if i want to continue further on C++ development.
I came from heavy Java programming background and fairly new to C++ .I do almost all the development under linux/GCC (4>) .
I want to know what kind good-practices I have to study more.For example ,instead of dynamic memory allocation for arrays,now I know I can use vectors,usage of smart pointers..etc.
Since I came from Java , I tend to compare C++ features with Java.For example,I saw several GC libraries and confused about choosing correct one.
What other good-practices I should learn?
Is there a standard I should follow?
C++ is different from Java (and C#) because it doesn't come with huge standard library. The C++ library is quite small actually and the best reference to it is The C++ Standard Library by Josuttis. But before you buy a copy you should know there's a new C++ standard pending so if you buy a copy, buy it used.

There's an initiative called Boost. It's a kind of a testing ground for what would be good to have in the C++ standard. It's a very high quality library you should use rather than implementing the corresponding features yourself. And eventually many Boost classes make it into the C++ standard.

http://www.boost.org/

There's also a book called Beyond The C++ Standard Library by Karlson which discusses extensively some of the most important Boost classes.

When it comes to good C++ usage there's an outstanding book called C++ Coding Standards by Sutter & Alexandrescu. The Java equivalent to this book would be Effective Java by Bloch.

Finally it's better for you to treat C++ as a brand new language rather that looking back at Java. These languages may look alike because of the shared C syntax, but that's only superfluously. At a deeper level they're extremely different.