Is my C++ book too old? (from 2007)

When I started learning C++, which I did for about 3 weeks ago, I picked up my brother's book from 2007. I wonder if many major changes have been made in C++ language from that year? Since I am a beginner I do not have a clue. Do I have to start all over again and learn from scratch? Is my book too old and should I get a new one?

So far I have learnt about, variables, arrays, datatypes, polymofrism, abstract classes, sub- and superclasses, inheritance, streams, UML, OOP, file structures with file pairs that you should have one .h-file and one .cpp-file for each class, exceptions, arguments to main method, creating and managing files with streams and a bit more. Is there a major difference when it comes to there mentioned things now and back in 2007?

Sorry if this question was stupid but I do not have a clue since I have just started learning and I want to do it right.

Thanks for your help!
Last edited on
If you're just starting out, no, most beginner books from late 1990's on cover basically the same things as the current books do. The language (for beginners anyways) hasn't changed much over those years.

The book is only 5 years old and the C++11 standard just was released a little under a year ago. This is only the second "standard" since the language was created (that I'm aware of).
@Volatile Pulse
A book from the 90's would be far outdated and probably no standard compliant. I believe it is the third edition of the standard, 1998, 2003, and 2011.

@Zerpent
The book doesn't sound to old, but you will probably get better responses if you give the title author and edition of the book.
03 wasn't a standard, I believe it was called C++03, but I think the actual name was TR1. It just fixed some bugs, added a few things, and gave more "rules" to what can be done.

I said late 1990's because from 97-99 books were being released that had some of the "updates" for C++98
According to http://www.open-std.org/jtc1/sc22/wg21/docs/standards while it is an update it is published as ISO/IEC 14882:2003 which AFAIK makes it the second edition to the standard. I guess it could be a matter of interpretation.
C++03 was supposed to be TC1 (Technical Corrigendum, not TR1, that's something completely different.), but they ended up making a small addition to the language after all (value initialization), so it had to be published as a full standard revision.

As for the OP, what matters is who wrote the book, a lot more than when it was published. There are terrible books that keep getting reprinted and revised, and remain terrible. Is it on this list? http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
I stand corrected, I confused 2007's TR1 for 2003's update. My apologies. We're on the third standard now.
The author should be good. It is Jan Skansholm, one of the data doctors/teachers from technology/data university Chalmers in Gothenburg in Sweden, which is probably the best university for data and technology education throughout scandinavia or at least Sweden, so the author should know what he is talking about. Although, everything does not seem to fit with today's standards.

For example:

He used the tmpnam() function from the cstdio in one exercise, I had to use the improved version tmpnam_s() function from the stdio.

What do you think? As long as I do not get bad programming habits from the beginning so i have to star all over again, I am happy.
Last edited on
He used the tmpnam() function from the cstdio in one exercise, I had to use the improved version tmpnam_s() function from the stdio.


tmpnam is standard C++. If your compiler refused to let you use it, that's something you should take up with your compiler.
Ok I use Visual Studio C++ 2010, any other tips? Plus I have gotten a problem with this, it does not find the kernel32.dll, kernelbase.dll nor ntdll.dll. But the files are in the windows/syswow64 dir where they are supposed to be.

Tips on any other IDE:s with good compilers?
Last edited on
tmpnam is standard, however
man wrote:
Never use this function. Use mkstemp(3) or tmpfile(3) instead.

Same for tmpnam{_r,_s}
Topic archived. No new replies allowed.