The whole thing in teaching C++ is - the usual one, the background in C family of languages. If the student / people learning programming, have no prior such knowledge or a fortiori, no programming background at all, the learning path must begin from first-things-first or in other words the procedural characteristics / features of the language (with or without comparisons to C) and then go to classes and the advanced topics based on them.
On the other hand, if learner has at least an intermediate knowledge of C, there's no point to talk about procedural things in depth other than the syntactic differences between C - C++ and syntactic sugar. So, effectively classes can be taught way earlier, because this way, learner, does not learn how to program but how to really program with C++.
Now, for the specific question about learning advanced concepts based on classes, it is obvious that one way or the other - referring to the above, student / learner has to know classes first.
As a side point, I don't find much truth in that someone already familiar (intermediate - advanced) with C, has to unlearn many things in order to learn good C++ programming, as is often said. I - many years ago, first learned a good deal of C (I was following a such discipline), and then introduced to C++ and I found no need in the procedure, to unlearn almost anything.