hi...ammm how can i improve my self in C++ and to understand it and to be strong on it...
thanks in advance

Like many things practice helps a lot. Think of some programs you would like to write, find out how to do it and then do it!

As you will have noted you will probably have to find out how to do things so research and reading are also important.

A point I should make is that knowing C++ inside out on its own is not going to make you a good software developer. C++ is a tool, and it is designed for use in a certain range of applications, a wide range, but a range none the less. There are cases in which other tools or technologies will be more appropriate, and knowing which tools are best for a job and how to wield them is very important.

Many systems these days use a variety of systems, tools and languages: POSIX (UNIX, Linux), Win32/Win64 (Windows 9x. ME, NT, 2000, XP, Vista), etc; compilers, linkers, build tools, version control systems, databases, web servers, debugging tools, development environments etc.; C++, Java, HTML, XML, SQL, C#, VB.NET, Perl, Python, etc. As well as other technologies such as middleware, frameworks and libraries: CORBA, COM/DCOM/COM+, MFC, ATL, wxWidgets, Java, .NET, Qt, gtk, Boost, ACE and on and on and on.

Behind all these systems, tools and technologies which can be used to implement software systems are the foundation skills in analysis, design, communication, computer science and thinking in general.

That is, the only reason to know C++ well is to implement good software using it, and just knowing C++ is not enough. Just knowing English (or some other human language) alone does not make a person a great poet or author.

That having been said I suggest that your research and reading matter include something on analysis, design, software development, tools, systems, computer science, etc. as well as C++ reference and practice. I also recommend that you look at some other languages and technologies. It will give you some perspective. If you can you might also like to try building C++ code using different compilers, preferably on different operating systems, for example using Visual C++ on Windows XP and g++ on Linux. This is also a good experience as it will show you that compilers are not all created equal! Code that builds under one may well fail or run differently when built using another. This is because few if any compilers implement the whole of ISO standard C++ and those that do may have bugs. Unfortunately the subsets supported vary, and is worse with older compilers. Differences are also allowed by the C++ standard - I came across one the other day in which the maximum value of a random number was much larger for one compiler I used than another, thus causing all my output to be badly formatted!

Finally here is some suggested reading material. I have started with very basic texts as I have not idea of your proficiency.

For absolute beginners there are a couple of books:

"You Can Do It - A Beginner's Introduction to Computer Programming" by Francis Glassborow and Roberta Allen.

And the second book in the series:

"You Can Program in C++" by Francis Glassborow

People often recommend the following if you already have some programming experience:

"Accelerated C++" by Koenig and Moo

although I have not read any of these.

There are many books on programming in general that are good. I found

"The Practice of Programming" by Kernighan and Pike

to be particularly useful.

For general good C++ usage you should look at

"Effective C++" "More Effective C++" and "Effective STL" by Scott Meyers

and the more advanced

"Exceptional C++" and "More Exceptional C++" by Herb Sutter (See also http://www.gotw.ca/gotw/index.htm)
"Modern C++ Design" by Andrei Alexandrescu
"Ruminations on C++" by Koenig and Moo

(Herb Sutter also has a couple of newer books out that I have not yet got around to reading: "Exceptional C++ Style" and "C++ Coding Standards" in conjunction with Andrei Alexandrescu - who works for a games company I think).

For C++ reference you should look at:

"The C++ Programming Language" 3rd Ed. by Bjarne Stroustrup

the C++ reference book from the man himself. You should also take a look at his book "The Design and Evolution of C++".

In addition you will most likely find that a couple of additional reference works will be of use. For the standard C++ library there is:

"The C++ Standard Library - a tutorial and reference" by Nicolai M. Josuttis - one of my most referred to books.

and for C++ templates there is:

"C++ Templates the Complete Guide" by David Vandevoorde and Nicolai M. Josuttis

The final reference work I am going to recommend is the C++ standard document itself which is published in book form by Wiley or is available for download as a PDF from the ANSI web site for $30 US (price the last time I checked):

"INTERNATIONAL STANDARD ISO/IEC 14882 Programming Languages C++"

the book is just titled:

"The C++ Standard"

This is _not_ an easy read, but is the word on how a C++ implementation should behave.

You might also like to consider obtaining a copy of the C language standard as well as the C++ standard makes references to it.

These are just some of the books I have found useful and are in no way a complete list. I suggest you try to find a real book shop that stocks at least some of these titles to see if any of them are for you. Alternatively you could look for reviews on the internet. One good place for book reviews is the ACCU site at http://accu.org/, specifically http://accu.org/index.php/book_reviews.

My final recommendation is to use the internet. Many tools and applications are available for free download. There are many articles on all sorts of technical things. Most often a few minutes with a search engine can turn up the information you require.  


All Answers

Answers by Expert:

Ask Experts


Ralph McArdell


I am a software developer with more than 15 years C++ experience and over 25 years experience developing a wide variety of applications for Windows NT/2000/XP, UNIX, Linux and other platforms. I can help with basic to advanced C++, C (although I do not write just-C much if at all these days so maybe ask in the C section about purely C matters), software development and many platform specific and system development problems.


My career started in the mid 1980s working as a batch process operator for the now defunct Inner London Education Authority, working on Prime mini computers. I then moved into the role of Programmer / Analyst, also on the Primes, then into technical support and finally into the micro computing section, using a variety of 16 and 8 bit machines. Following the demise of the ILEA I worked for a small company, now gone, called Hodos. I worked on a part task train simulator using C and the Intel DVI (Digital Video Interactive) - the hardware based predecessor to Indeo. Other projects included a CGI based train simulator (different goals to the first), and various other projects in C and Visual Basic (er, version 1 that is). When Hodos went into receivership I went freelance and finally managed to start working in C++. I initially had contracts working on train simulators (surprise) and multimedia - I worked on many of the Dorling Kindersley CD-ROM titles and wrote the screensaver games for the Wallace and Gromit Cracking Animator CD. My more recent contracts have been more traditionally IT based, working predominately in C++ on MS Windows NT, 2000. XP, Linux and UN*X. These projects have had wide ranging additional skill sets including system analysis and design, databases and SQL in various guises, C#, client server and remoting, cross porting applications between platforms and various client development processes. I have an interest in the development of the C++ core language and libraries and try to keep up with at least some of the papers on the ISO C++ Standard Committee site at http://www.open-std.org/jtc1/sc22/wg21/.


©2016 About.com. All rights reserved.