Where I went to school they taught most classes in C++ (actually it was more of a hybrid C/C++: think C++ but using only C-style strings and no stl), and I think it makes a great first language. It's just the right mix of close-to-the-hardware low-level grunt work to help you learn what's really going on with memory, pointers, and streams on one end combined with object design using high-level constructs like stl collections and garbage collection (boost shared pointers, etc) on the other.
That said, I've moved on to VB.Net and C# now. I still really appreciate my C++ background, and I think it's made me a better programmer having used it first. But I wouldn't want to go back.