Objective C does to C basically what C++ does. It addes ADT, or objects, or classes...whichever way you prefer to say it. It does so in a different way though...whereas C++ is geared toward static type checking and binding and static whatnot in general, Objective C is geared toward dynamic type checking and binding and code loading (it loads code segments as needed).
Strong static type checking is generally considered better than dynamic type checking due to the ease of catching errors at compile time. This is one reason I think C++ is more widley used...also, C++ can do dynamic type crap with virtual functions if you want too, negating that Objective C advantage. I'm not sure if Objective C has some other features like templates either. (It may...I havn't used it, Ive just run into language summaries...hopefully someone who has used it will reply too.)
Basically, Objective C seems like at least a credible alternative to C++ (although personally I'd prefer the strong type checking and virtual functions of C++) but what could have happened was that C++ just took root based on other things than it clearly being better. I think it came out first...which would give it a better foothold to build a user base...if most already use C++ others are more likely to use it too. It would be supported better in terms of compilers and libraries and whatnot. Or mabye by sheer choatic, luck factors C++ just became more widley used...Beta max was supposed to clearly be better than VHS and look what happened there. The best doesnt always become the standard. I would like to hear from someone who actually has some experiance though and isnt just hypothesizing.