C ++ został opracowany w celu zarządzania złożonością, z którą C nie mógł sobie poradzić. Na przykład częstym problemem w C było to, że można „zabraknąć nazw zmiennych” (nie należy tego rozumieć dosłownie), ponieważ nie było enkapsulacji, przestrzeni nazw itp.
Ponadto C nie ma wyjątków, dlatego obsługa błędów jest bardzo podatna na błędy, ponieważ to od użytkownika biblioteki zależy zawsze sprawdzanie zwracanych wartości func, podczas gdy z wyjątkami, twórca biblioteki po prostu zgłasza wyjątek, który gwarantuje, że przepływ programu zostanie zatrzymany.
C ++ pomaga, mając obiekty inicjujące konstruktora, które są automatycznie wywoływane przez kompilator. W przeciwieństwie do struktur C, które muszą zostać zainicjowane przez programistę (stąd inny obszar podatny na błędy).
Wreszcie, OOP ma wiele innych zalet, takich jak ponowne wykorzystanie obiektów, a także ogólne koncepcje oparte na programowaniu, takie jak szablony i ogólne, które pozwalają na ponowne użycie kodu źródłowego itp.
I wiele innych rzeczy, których wymienienie zajęłoby zbyt wiele czasu.