One reason often quoted for learning Smalltalk is that it is ``pure'' and thus force people to think and program ``object oriented.'' I will not go into the discussion about ``purity'' beyond mentioning that I think that a general purpose programming language ought to and can support more than one programming style (``paradigm'').
The point here is that styles that are appropriate and well supported in Smalltalk are not necessarily appropriate for C++. In particular, a slavish following of Smalltalk style in C++ leads to inefficient, ugly, and hard to maintain C++ programs. The reason is that good C++ requires design that takes advantage of C++'s static type system rather than fights it. Smalltalk support a dynamic type system (only) and that view translated into C++ leads to extensive unsafe and ugly casting.
The reverse is true as well, of course. Once you get past a high level view of your system, design will get to be language specific - you'll approach the same task differently in C++, Smalltalk, Java (et. al.). Which language to use depends on a best fit analysis - clearly, I'm of the opinion that Smalltalk is a better fit for most application level tasks. But the larger point is what Bjarne said.