How to learn proper C++?
<p>While reading a long <a href="http://stackoverflow.com/questions/598552/should-i-learn-c-before-learning-c">series</a> of <a href="http://stackoverflow.com/questions/649789/why-artificially-limit-your-code-to-c">really</a>, <a href="http://stackoverflow.com/questions/2552839/which-c-standard-library-wrapper-functions-do-you-use">really</a> <a href="http://stackoverflow.com/questions/716904/preparing-for-the-next-c-standard">interesting</a> <a href="http://stackoverflow.com/questions/2245196/c-urban-myths">threads</a>, I've come to a realization: I don't think I really know C++.  I know C, I know classes, I know inheritance, I know templates (&amp; the STL) and I know exceptions.  Not C++.  To clarify, I've been writing "C++" for more than 5 years now.  I know C, and I know that C and C++ share a common subset.</p>

<p>What I've begun to realize, though, is that more times than not, I wind up treating C++ something vaguely like "C with classes," although I do practice RAII.  I've never used Boost, and have only read up on TR1 and C++0x - I haven't used any of these features in practice.  I don't use namespaces.</p>

<p>I see a list of <code>#define</code>s, and I think - "Gracious, that's horrible! Very un-C++-like," only to go and mindlessly write class wrappers for the sake of it, and I wind up with large numbers (maybe a few per class) of static methods, and for some reason, that just doesn't seem right lately.</p>

<p>The professional in me yells "just <em>get the job done</em>," the academic yells "you <em>should</em> write <em>proper</em> C++ when writing C++" and I feel like the point of balance is somewhere in between.  I'd like to note that I don't want to program "pure" C++ just for the sake of it.</p>

<p>I know several languages.  I have a good feel for what "Pythonic" is.  I know what clean and clear PHP is.  Good C code I can read and write better than English.  The issue is that I learned C by example, and picked up C++ as a "series of modifications" to C.  And a lot of my early C++ work was creating class wrappers for C libraries.  I feel like my own personal C-heavy background while learning C++ has sort of... clouded my acceptance of C++ in it's own right, as it's own language.</p>

<p>Do the weathered C++ lags here have any advice for me?  Good examples of clean, sharp C++ to learn from?  What habits of C does my inner-C++ really need to break from?  My goal here is not to go forth and trumpet "good" C++ paradigm from rooftops for the sake of it.  <strong>C and C++ are two different languages, and I want to start treating them that way.</strong>  How?  Where to start?</p>

<hr>

<p><strong>Update:</strong></p>

<p>Based on the responses thus far, it seems that a few readings were commonly recommended:</p>

<p>The three <a href="http://www.aristeia.com/">Scott Meyers</a> books seem popular:</p>

<ul>
<li><a href="http://rads.stackoverflow.com/amzn/click/0321334876">Effective C++</a></li>
<li><a href="http://rads.stackoverflow.com/amzn/click/020163371X">More Effective C++</a></li>
<li><a href="http://rads.stackoverflow.com/amzn/click/0201749629">Effective STL</a></li>
</ul>

<p>A book (<a href="http://rads.stackoverflow.com/amzn/click/0321113586">C++ Coding Standards</a>) by <a href="http://herbsutter.com/">Herb Sutter</a> also comes recommended with a <a href="http://stackoverflow.com/questions/2963019/how-to-learn-proper-c/3115496#3115496">reasonable justification</a>.</p>

<p>Along with <a href="http://rads.stackoverflow.com/amzn/click/0321133544">Beyond the C++ Standard Library: An Introduction to Boost</a> by Björn Karlsson, there were many references directly to the <a href="http://www.boost.org/doc/libs/">Boost</a> and <a href="http://www.sgi.com/tech/stl/">STL</a> documentation respectively.</p>

<p>A few folks mentioned taking background information <a href="http://www2.research.att.com/~bs/">right from the horses mouth</a>.  The <a href="http://www.parashift.com/c++-faq-lite/">C++ FAQ Lite</a> was brought up - and seems to be a great resource to either read as a learning tool, and as a quick reference guide.  Another great suggestion was to follow by the example of our resident SO pundits by perusing the <a href="http://stackoverflow.com/questions/tagged?tagnames=c%2b%2b&amp;sort=stats&amp;pagesize=50">C++ Leaderboard</a>.</p>

<p>Based on votes (there were many great answers) I'm going to accept the answer of <a href="http://stackoverflow.com/users/3153">Brian R. Bondy</a>.</p>
