Basically, C++ was built on top of traditional C to add support to object oriented programming concepts. It mixed traditional imperative programming with OO, leading to some design flaws. Some newer languages like C# or Java work on the same basis but have a more clear and consistent syntax.