I am looking for a book which can teach OOP concepts using c++ . Could you guys please suggest me some books.
C++ is probably not the ideal language for doing this, because very large chunks of the language do not require or use object oriented techniques. You might be better off looking at something like Java or Python instead.
I found Meyer's "Effective C++" and "More Effective C++" both very good reads.
Large Scale Software Design in C++ by John Lakos really nails it, but not beginner stuff
Accelerated C++ by Andrew Koenig is probably a right choice to start with C++ and OOP.
You should also make yourself familiar with general concepts, take OOA/D by Grady Booch and Design Patterns by GoF.
Actually, Thinking in C++ (both volumes) is my favorite. After reading it you won't even need most parts of [More] Effective C++, Effective STL (but still go over them!).
Then, you can browse C++ for Professionals, which will focus on pecularities of C++ features, and cover many other useful topic of development.
C++ isn't the best language to learn object oriented programming because of the huge freedom in the language itself. C++ still contains ANSI C and so most of the Books to learn C++ start teaching C.
I always hated this approach and I love C++. The only book that came my way I liked is Thinking in C++ from Bruce Eckel.
The fist chapter is called
1. Introduction to Objects
after explaining all the object stuff chappter 3 explains some C stuff.
3. The C in C++
Since C++ is based on C, you must be familiar with the syntax
of C in order to program in C++, just as you must be reasonably
fluent in algebra in order to tackle calculus.
So its almost 10 years ago when I started reading it I still remember it to be a good teacher because it also explains why some things in C++ are like they are.
Wow: I searched for it and here is a free download.
(Note: I don't know what OOPS means, if anything. I'm assuming OOP here.)
What I did, and worked very well for me:
- Learn pure OO. It will be useful anyway. When you move to C#, your knowledge of OO will remain the same, not contaminated by C++ syntax.
- Learn C++.
- Apply OO to C++. With some good articles as a reference, you'll be ok.
The best way of learning OOP is by learning Design Patterns. I started out with the book Design Patterns Explained. However, many people recommend Head First Design Patterns, so that's probably a good choice too, even though it illustrates the concepts using the Java programming language.
There is one book called C++ with Object Oriented Programming by Paul S. Wang, ISBN 0-534-19644-6
I learnt OOP with C++ first but my best experience was from a book by Paul and Harvey Deitel, JAVA How to Program, for Java programmers. The text has interesting case studies that take you from analysis through design to implementation of software using the O-O methodology. There is a C++ counterpart to the book, C++ How to Program, by the same authors. I think it is good enough too for beginners (and pros alike).
Thinking in C++ by Bruce Eckel. A version is freely downloadable from http://www.mindviewinc.com/Books/ (not sure if that's the latest, but it's free so no loss in taking a look at it.)